基本上我试图编写一段代码,用文件将文本更改为文件本身的名称。基本上我有很多文件EMBOSS_001
作为第一段文本,例如。(EMBOSS_001|296133516|ref|YP_003640763.1|,33.06,248,157,7,1,243,1,244,7e-31, 121)
。我想将其更改为文件的名称。我的文件名从fp1_blast_output.csv
到fp11000_blast_output.csv
不等。我想将文件中文本的EMBOSS
部分更改为文件的fp()
部分。这就是我所拥有的,但遗憾的是它无法正常工作!
from glob import glob
fasta_files = glob('*output.csv')
print(fasta_files)
for fname in fasta_files:
with open(fname) as input1, open('modified/{}'.format(fname), 'w') as output:
data = input1.read()
data = data.replace('EMBOSS_001',fname.split('._blast_output.csv')[0])
output.write(data)
最终我希望得到的是:
fp()|296133516|ref|YP_003640763.1|,33.06,248,157,7,1,243,1,244,7e-31, 121
答案 0 :(得分:0)
这有用吗?
from glob import glob
fasta_files = glob('*output.csv')
print(fasta_files)
for fname in fasta_files:
with open(fname) as input1, open('modified/{}'.format(fname), 'w') as output:
data = input1.read()
new_name = fname.split('_blast_output.csv')[0]
changed_data = data.replace('EMBOSS_001',new_name)
output.write(changed_data)
答案 1 :(得分:0)
一般来说, - 我希望这实际上解决了你的问题, - 如果你想将所有.csv文件中的部分文本更改为这些文件的名称(减去'.csv'部分),这就是我的方式会接近它:
from glob import glob
fasta_files = glob('*.csv')
for fname in fasta_files:
with open(fname, 'r') as finput:
data = finput.read()
data = data.replace('EMBOSS_001', fname[:-4])
with open('modified/{}'.format(), 'w') as output:
output.write(data)
答案 2 :(得分:-1)
您的示例输入和预期/期望的结果是相同的。 您可以尝试以下方法:
with open(fname) as input1, open('modified/{}'.format(fname), 'w') as output:
new_fname = fname.split('.aln_blast_output.csv')[0]
for line_to_change in input1.readlines():
output.write(line_to_change.replace('EMBOSS_001', new_fname))
并且还请发布您的错误。