![](/img/trans.png)
[英](/bin/bash: python3: command not found) When running python script through system command in Matlab
[英]Python3: command not found, when running from cli
我试图将python模块作为命令运行,但是我总是遇到错误: command not found
。
#!/usr/bin/env python
import sys
import re
from sys import stdin
from sys import stdout
class Grepper(object):
def __init__(self, pattern):
self.pattern = pattern
def pgreper(self):
y = (str(self.pattern))
for line in sys.stdin:
regex = re.compile(y)
x = re.search(regex, line)
if x:
sys.stdout.write(line)
if __name__ == "__main__":
print("hello")
pattern = str(sys.argv[1])
Grepper(pattern).pgreper()
else:
print("nope")
我确定这是否与该行有关:
if __name__ == "__main__":
但是我只是想不通,对我来说这是一个新领域,而且有点压力。
您的脚本名称应带有.py
扩展名,因此应命名为pgreper.py
类的pgreper.py
。
要运行它,您需要执行python pgreper.py pattern_string
或具有可执行权限(如Gabriel所述),您可以执行./pgreper.py pattern_string
。 请注意,您必须提供脚本路径(除非当前目录位于命令PATH中); pgreper.py pattern_string
将导致bash打印“找不到命令”错误消息。
您无法通过管道,IOW, cat input.txt | ./pgreper.py "pattern_string"
将模式数据传递给它cat input.txt | ./pgreper.py "pattern_string"
cat input.txt | ./pgreper.py "pattern_string"
将不起作用:该模式必须在命令行上作为参数传递。我想您可以执行 ./pgreper.py "$(cat input.txt)"
但是如果需要该功能,最好修改脚本以从stdin读取。
抱歉,我没有正确阅读脚本的正文。 :embarrassed:我现在看到您的pgreper()
方法从stdin读取数据。 抱歉,以上段落引起任何混乱。
通过对我之前的失误的道歉,这是您脚本的较干净版本。
#! /usr/bin/env python
import sys
import re
class Grepper(object):
def __init__(self, pattern):
self.pattern = pattern
def pgreper(self):
regex = re.compile(self.pattern)
for line in sys.stdin:
if regex.search(line):
sys.stdout.write(line)
def main():
print("hello")
pattern = sys.argv[1]
Grepper(pattern).pgreper()
if __name__ == "__main__":
main()
else:
print("nope")
确保您在此处具有可执行文件: /usr/bin/env
。
当您尝试将python模块作为命令运行时,它将称为解释器。 如果没有env
命令,则可能需要用/usr/bin/python
或/usr/bin/python3
替换它。
另外,请确保您的文件是可执行文件: chmod +x my_module.py
然后尝试使用./my_module.py
运行它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.