我希望我能以清晰的方式提出这个问题,我非常喜欢python和论坛的初学者,所以如果我从一开始就遇到任何问题我会道歉!
我的问题是我目前正在尝试使用os.system()来启用程序在目录中的每个文件上运行(这是一个ASCII表的目录,我正在与一系列其他表交叉查找匹配。
import os
for filename in os.listdir('.'):
os.system('stilts tmatch2 ifmt1=ascii ifmt2=ascii in1=intern in2= %s matcher=2d values1='col1 col2' values2='col1 col2' params=5 out= %s-table.fits'%(filename,filename))
所以,我希望这样做是为了每个'文件名',它将操作这个程序称为高跷。我猜这个被中断/不起作用,因为代码本身存在撇号',这必须破坏语法? (如果我错了,请纠正我)
然后我用“”替换了'os.system()中的'。但是,这会阻止我使用%s表示法来引用整个代码中的文件名(至少我非常肯定)。
import os
for filename in os.listdir('.'):
os.system("stilts tmatch2 ifmt1=ascii ifmt2=ascii in1=intern in2= %s matcher=2d values1='col1 col2' values2='col1 col2' params=5 out= %s-table.fits"%(filename,filename))
现在运行但显然不起作用,因为它与%s输入有关。
我有什么想法可以解决这个问题?有没有其他方法可以在不使用%s的情况下引用'filename'给出的所有其他文件?
先谢谢你,对于我在编码和使用这个论坛方面缺乏经验感到抱歉!
答案 0 :(得分:0)
我对os.system()并不熟悉,但是如果你尝试对你发送给该方法的字符串进行一些更改,可能会有不同的行为。
你必须知道在python中你可以“求和”字符串,这样你就可以将命令保存在变量中并添加文件名,如下所示:
os.system(commands+filename+othercommands+filename)
可能有效的其他问题是:使用时:
for file in os.listdir()
您可能是recievin文件类型而不是其名称的字符串。尝试使用诸如filename.name之类的方法来检查这是否是一种不同类型的东西。
抱歉,我无法为您测试我的答案,但我使用的电脑对我来说太慢了,无法尝试下载python。