我有3个文件,其中包含目录中其他文件的列表。我正在尝试获取列表中的文件并将它们复制到新目录。当我得到一个IOError时,我想我正在绊倒打开文件的最佳方法:[Errno 2]没有这样的文件或目录。我有一个使用打开文件的游戏,但无法让我的操作工作。这是我的代码和我正在尝试阅读的一些文件。
import shutil
import os
f=open('polymorphI_hits.txt' 'polymorphII_hits.txt' 'polymorphIII_hits.txt')
res_files=[line.split()[1] for line in f]
f=close()
os.mkdir(os.path.expanduser('~/Clustered/polymorph_matches'))
for file in res_files:
shutil.copy(file, (os.path.expanduser('~/Clustered/polymorph_matches')) + "/" + file)
PENCEN.res 2.res number molecules matched: 15 rms deviation 0.906016
PENCEN.res 3.res number molecules matched: 15 rms deviation 1.44163
PENCEN.res 5.res number molecules matched: 15 rms deviation 0.867366
编辑:我使用下面的Ayas代码修复此问题,但现在得到IOError:[Errno 2]没有这样的文件或目录:'p'。我猜它正在读取文件名的第一个字符并在那里失败,但我无法弄清楚原因。
res_files = []
for filename in 'polymorphI_hits.txt' 'polymorphII_hits.txt' 'polymorphIII_hits.txt':
res_files += [line.split()[1] for line in open(filename)]
答案 0 :(得分:1)
Python将连续的字符串常量视为单个字符串,因此行...
f=open('polymorphI_hits.txt' 'polymorphII_hits.txt' 'polymorphIII_hits.txt')
...实际上被解释为......
f=open('polymorphI_hits.txtpolymorphII_hits.txtpolymorphIII_hits.txt')
...可能是指一个不存在的文件。
我不相信有一种方法可以在一次调用中使用open()
打开多个文件,因此您需要更改...
f=open('polymorphI_hits.txt' 'polymorphII_hits.txt' 'polymorphIII_hits.txt')
res_files=[line.split()[1] for line in f]
f=close()
......更像是......
res_files = []
for filename in 'polymorphI_hits.txt', 'polymorphII_hits.txt', 'polymorphIII_hits.txt':
res_files += [line.split()[1] for line in open(filename)]
但其余的代码看起来还不错。