我正在使用模块中的input函数fileinput来接受脚本pipes或input file这是最小脚本:
finput.py
import fileinput
with fileinput.input() as f:
for line in f:
print(line)
Run Code Online (Sandbox Code Playgroud)
使这个脚本可执行后,我运行ls | ./finput.py并获取unexpected error message
./finput.py: line 1: import: command not found
./finput.py: line 3: syntax error near unexpected token `('
./finput.py: line 3: `with fileinput.input() as f:'
Run Code Online (Sandbox Code Playgroud)
我找到的唯一修复是在#!/usr/bin/env/python3import语句之前添加的时候.
但是这个问题似乎只与fileinput模块有关.由于以下脚本运行良好,没有shebang:
fruit.py
import random
fruits = ["mango", "ananas", "apple"]
print(random.choice(fruits))
Run Code Online (Sandbox Code Playgroud)
现在我错过了什么?为什么不能import,因为该命令可以找到shebang不是必需的finput.py?
Tho*_*zco 37
您需要告诉您的操作系统这是一个Python程序,否则,它被解释为shell脚本(import无法找到该命令).
就像你确定的那样,这是通过使用shebang线来完成的:
#!/usr/bin/env python3
Run Code Online (Sandbox Code Playgroud)
只有在你要运行这样的脚本时才需要这样:./script.py它告诉你的操作系统"运行这个可执行文件".这样做需要您的操作系统识别它应该如何运行程序,并且它依赖于shebang线(除此之外).
但是如果你运行python script.py(我猜你做的那样fruit.py),那么Python不会问你的操作系统是否是Python程序,所以shebang行并不重要.
| 归档时间: |
|
| 查看次数: |
51771 次 |
| 最近记录: |