0

我有 3 个文件,其中包含目录中其他文件的列表。我正在尝试获取列表中的文件并将它们复制到新目录。当我收到 IOError: [Errno 2] No such file or directory 时,我想我正在寻找打开文件的最佳方式。我尝试使用 with 打开文件,但无法让我的操作正常工作。这是我的代码和我正在尝试阅读的文件之一。

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] No such file or directory: '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)]
4

1 回答 1

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)]

不过,其余代码看起来还不错。

于 2013-04-19T14:53:51.943 回答