当前位置:  开发笔记 > 编程语言 > 正文

为什么我的python脚本会自行删除?

如何解决《为什么我的python脚本会自行删除?》经验,为你挑选了1个好方法。

我正在编写一个脚本,将多个fastq文件转换为fasta和qual.总是当我运行它时,脚本之后有零个字节.

import sys
import re
import os
import fileinput
from Bio import SeqIO
from Bio.Alphabet import IUPAC

Directory = "/users/etc"
def process(Directory):
    filelist = os.listdir(Directory)
    for f in filelist:
        SeqIO.convert(f, "fastq", f.replace(".fastq",".qual"), "qual", alphabet=IUPAC.ambiguous_dna)

my_directory = "/users/etc"
process(my_directory)

我同时忙于同时执行fastq到fasta和qual转换 - 只是复制SeqIO.convert行并交换文件格式不起作用...而且,我希望有一个数字打印多少个文件已被转换.

干杯



1> Charles Duff..:

在这个循环中:

filelist = os.listdir(Directory)
for f in filelist:
    SeqIO.convert(f, "fastq", f.replace(".fastq",".qual"), "qual", alphabet=IUPAC.ambiguous_dna)

...你正在遍历目录中的每个文件.

除了你的Python脚本,或每次结束文件并不是每一个文件.fastq,但每个文件.

因为'yourscript.py'.replace('.fastq', '.qual')它仍然存在'yourscript.py',然后通过尝试将其用作输出和输入来覆盖Python脚本.


所以,这里有一些注意事项:

保持数据和代码分开.理想情况下,在完全不同的目录中.一个$HOME/bin目录是一个合适的位置,以保持自己的代码-如果你添加目录到你PATH,那么你就可以在任何地方运行它可执行命令.

在循环中,过滤掉未结束的文件名.fastq.这可能看起来像:

for f in filelist:
    if not f.endswith('.fastq'):
        continue
    SeqIO.convert(f, 'fastq', f[:-len('.fastq')]+'.qual', 'qual', alphabet=IUPAC.ambiguous_dna)

因为在添加了这个检查后我们知道.fastq存在于文件名的末尾,所以我们可以更有效地替换它 - 而不是搜索字符串的整个名称,我们可以修剪掉那么多的字符,然后改为新的扩展.这有点快,意味着我们不会修改除扩展名之外的文件名的任何部分.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有