<p>总结我的评论,您可以这样做,以更直观的方式迭代<code>CSV</code>文件中的行:</p>
<pre class="lang-py prettyprint-override"><code>import csv
csvfile = '/home/lamma/local-blast/scripts/test.csv'
with open(csvfile) as f:
rows = csv.reader(f)
headers = next(rows)
for sample, forward, reverse in rows:
# do something with sample, forward, and reverse
# rinse and repeat
</code></pre>
<p>下面是使用<code>pathlib</code>和<code>f-strings</code>(正如我在评论中所说,它需要Python 3.6+)更新代码的替代方案:</p>
<pre class="lang-py prettyprint-override"><code>import csv
from pathlib import Path
# I'm assuming you are processing args somewhere else
# in your code
path = Path(args.path)
csvfile = Path(args.csv)
with csvfile.open() as f:
rows = csv.reader(f)
headers = next(rows)
# avoid using generic indexed elements of rows
# for clarity in the code
for sample, forward, reverse in rows:
# process forward sample file
seq = path / f'{forward}.seq'
fasta = path / f'{sample}_1.fasta'
if seq.exists():
seq.rename(fasta)
# process reverse sample file
seq = path / f'{reverse}.seq'
fasta = path / f'{sample}_2.fasta'
if seq.exists():
seq.rename(fasta)
</code></pre>
<p>我希望有帮助</p>