Trên hệ thống * nix (linux/unix),
nếu bạn:
$ chmod 0744 your_file.py
-rwxr--r-- your_file.py
và thêm đường dẫn đến python như dòng đầu tiên của your_file.py
:
#!/usr/bin/python
hoặc (trong trường hợp của tôi):
#!/usr/local/bin/python
Khi bạn làm điều đó, thay vì chạy ning nó như thế này:
$ python your_file.py
Bạn có thể chạy nó như thế này:
$ ./your_file.py
hoặc thậm chí đổi tên nó để yourfile
và chạy nó như thế này:
$ ./yourfile
và nếu bạn sau đó sao chép yourfile
vào thùng rác của bạn (ví dụ: #!/usr/bin/
, hoặc #!/usr/local/bin/
) bạn có thể chạy nó như thế này:
$ yourfile
Sau đó, bạn có thể ...
Sử dụng raw_input()
để thu hút và nhận được thông tin từ bạn dùng.
your_file.py
:
#!/usr/local/bin/python
import os
while(True):
# cntrl-c to quit
input = raw_input('your_prompt$ ')
input = input.split()
if input[0] == 'ls':
dire = '.'
if len(input) > 1:
dire = input[1]
print('\n'.join(os.listdir(dire)))
else:
print('error')
your_file.py
sử dụng ví dụ:
$ chmod 744 your_file.py
$ cp your_file.py /usr/local/bin/your_file
$ your_file
your_prompt$ ls
list_argv.py
your_file.py
your_ls.py
your_subprocess.py
your_prompt$ ls .
list_argv.py
your_file.py
your_ls.py
your_subprocess.py
your_prompt$ pwd
error
your_prompt$ ^CTraceback (most recent call last):
File "/usr/local/bin/your_file", line 7, in <module>
input = raw_input('your_prompt$ ')
KeyboardInterrupt
$
luận Grab với sys.argv
từ dòng lệnh khi bạn chạy script của bạn:
list_argv.py
:
#!/usr/local/bin/python
import sys
print(sys.argv)
list_argv.py
dụ sử dụng:
$ python list_argv.py
['list_argv.py']
$ python list_argv.py hello
['list_argv.py', 'hello']
$ python list_argv.py hey yo
['list_argv.py', 'hey', 'yo']
$ chmod 744 list_argv.py
$ ./list_argv.py
['./list_argv.py']
$ ./list_argv.py hi
['./list_argv.py', 'hi']
$ ./list_argv.py hey yo
['./list_argv.py', 'hey', 'yo']
$ cp list_argv.py /usr/local/bin/list_argv
$ list_argv hey yo
['/usr/local/bin/list_argv', 'hey', 'yo']
Thay raw_input()
với sys.argv
.
'your_ls.py':
#!/usr/local/bin/python
import sys
import os
dire = '.'
if len(sys.argv) > 1:
dire = sys.argv[1]
print('\n'.join(os.listdir(dire)))
'your_ls.py' sử dụng ví dụ:
$ chmod 744 your_ls.py
$ cp your_ls.py /usr/local/bin/your_ls
$ your_ls
list_argv.py
your_file.py
your_ls.py
your_subprocess.py
$ your_ls .
list_argv.py
your_file.py
your_ls.py
your_subprocess.py
$ your_ls blah
Traceback (most recent call last):
File "/usr/local/bin/your_ls", line 9, in <module>
print('\n'.join(os.listdir(dire)))
OSError: [Errno 2] No such file or directory: 'blah'
Sử dụng subprocess.Popen
để truy cập bất cứ điều gì bạn có thể từ dòng lệnh.
your_subprocess.py
: ví dụ
#!/usr/local/bin/python
import os
import subprocess
while(True):
# cntrl-c to quit
input = raw_input('your_prompt$ ')
process = subprocess.Popen(input, shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
out, err = process.communicate()
print(out)
print(err)
your_subprocess.py
sử dụng:
$ chmod 744 your_subprocess.py
$ cp your_subprocess.py /usr/local/bin/your_subprocess
$ your_subprocess
your_prompt$ ls
list_argv.py
your_file.py
your_ls.py
your_subprocess.py
your_prompt$ ls .
list_argv.py
your_file.py
your_ls.py
your_subprocess.py
your_prompt$ pwd
/Users/ox/_workspace/cmd_ln
your_prompt$ blah
/bin/sh: blah: command not found
your_prompt$ ^CTraceback (most recent call last):
File "/usr/local/bin/your_subprocess", line 8, in <module>
input = raw_input('your_prompt$ ')
KeyboardInterrupt
$
BREAK STUFF!
:-D
CÓ VUI LÒNG!
-ox
Những gì bạn đang mô tả là một ứng dụng thiết bị đầu cuối, không phải là một chương trình dòng lệnh – Eric