我想统计一下我写了多少行代码。
这是Python代码:
import os
import sys
EXT = ['.c','.cpp','.java','.py']
def main():
l = []
if os.path.isdir(sys.argv[1]):
for root, dirs, files in os.walk(sys.argv[1]):
l.extend([os.path.join(root, name) for name in files])
else:
l.append(sys.argv[1])
params = ["'"+p+"'" for p in l if os.path.splitext(p)[1] in EXT]
result = os.popen("wc -l %s "%" ".join(params)).read()
print result
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
在此之前,它按预期运行。但今天,它给了我这个错误:
sh: 1: Syntax error: Unterminated quoted string
Run Code Online (Sandbox Code Playgroud)
我不知道发生了什么事。
您的 Python 脚本缺少shebang行。将以下内容添加到文件顶部:
#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)
然后你应该能够运行以下命令,假设你的脚本位于/path/to/your_script.py并且它设置了可执行位:
/path/to/your_script.py arg1 arg2 [...]
Run Code Online (Sandbox Code Playgroud)
或者:
python /path/to/your_script.py arg1 arg2 [...]
Run Code Online (Sandbox Code Playgroud)
我怀疑发生的变化是名称中包含 a 的源文件'已添加到您正在检查的目录中,并且 shell 对此感到窒息。
您可以将以下功能添加到您的程序中:
def shellquote(s):
return "'" + s.replace("'", "'\\''") + "'"
Run Code Online (Sandbox Code Playgroud)
[摘自Greg Hewgill对如何在 Python 中转义 os.system() 调用?.]
并这样称呼它:
params = [shellquote(p) for p in l if os.path.splitext(p)[1] in EXT]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50588 次 |
| 最近记录: |