我有一个短脚本的问题,如果你能看一看就会很棒!在不同的文件中使用子进程python
import os
import subprocess
root = "/Users/software/fmtomov1.0/remaker_lastplot/source_relocation/observed_arrivals_loc3d"
def loop_loc3d(file_in):
"""Loops loc3d over the source files"""
return subprocess.call (['loc3d'], shell=True)
def relocation():
for subdir, dirs, files in os.walk(root):
for file in files:
file_in = open(os.path.join(subdir, file), 'r')
return loop_loc3d(file_in)
我觉得这个脚本很容易理解,它很简单。但是我没有得到想要的结果。我只需要'loc3d'来操作'observed_arrivals_loc3d'目录中存在的所有文件内容,这意味着我需要打开所有文件,这就是我实际完成的工作。事实上,如果我尝试在'打印文件'之后:
for subdir, dirs, files in os.walk(root)
我会得到每个文件的名称。此外,如果我尝试后
file_in = open(os.path.join(subdir, file), 'r')
一个“打印file_in”我得到这样的线,用于对文件:
<open file '/Users/software/fmtomov1.0/remaker_lastplot/source_relocation/observed_arrivals_loc3d/EVENT2580', mode 'r' at 0x78fe38>
子已上只有一个文件单独测试,它的工作。
总的来说,我没有收到任何错误,只是-11,这对我来说毫无意义。 loc3d的输出应该完全不同。
那么代码对你来说看起来不错吗?有什么我失踪?任何建议?
感谢您的帮助!
也可以考虑使用['make',由@Kirill Teplinskiy在评论中建议](http:// stackoverflow。COM/Q /4279分之7938128)。 – jfs
这对我来说很难理解。无论如何,我尝试了你下面说的,没有任何反应(没有输出没有错误)。在这个阶段,我认为这是一个'loc3d'错误,因此就python而言,可能一切都很好。将尝试深入了解loc3d。 – eikonal