我会有一个名为
的8000个文件夹Phy000CVIC_YEAST.raw.fasta
Phy000CVID_YEAST.raw.fasta
另一个文件(ID.txt)包含ID为
Phy000CVKM YAL001C
Phy000CVKL YAL002W
我正在尝试用python更改文件ID(ID.txt)中的文件名,到目前为止我正在做什么
f = os.listdir(' / Users / admin / Desktop / folder')
f中的f:
if f.endswith('.clean.fasta'):
ef=f.split('_')
with open('ID.txt') as id:
for i in id:
i=i.split()
if ef[0]==i[0]:
print(os.rename(f, i[1]))
我收到以下错误
无
无
追踪(最近一次呼叫最后一次):
文件"",第8行,
OSError:[Errno 2]没有这样的文件或目录
请指导,在哪里以及出于什么问题?
(PS:只有两个文件被重命名为8000plus)
答案 0 :(得分:0)
你的分裂存在一些问题,你不能指望它们每次都返回一个长度为2的数组。此外,您没有在迭代中通过该文件夹找到正确的文件。我希望这可以让你开始走上正轨。我将ID重新组织成一个列表,这样您就不必在每次迭代时都读取ID.txt文件。
#First read the ID pairs into a reusable list
ids = []
with open('ID.txt', 'r') as f:
for line in f:
id = line.strip().split(" ", 1)
ids.append(id)
files = os.listdir('/Users/admin/Desktop/folder')
for f in files:
if f.endswith('.clean.fasta'):
first, second = f.split('_', 1)
for id in ids:
#Check if the base names match and the yeast ID is not empty
if id[0] == first and id[1]:
#Rename using the updated yeast ID
print(os.rename(f, "{0}_{1}.clean.fasta".format(first, id[1])))
我不能保证这对你有用,但是在你提供的微不足道的情况下,这是我能做的最好的事情。希望这会有所帮助。