Python字符串连接和等效的bash参数扩展

时间:2016-08-15 09:58:05

标签: python string bash biopython

我是python的新手,但我发现自己在bash中做的很多事情就是在字符串前面加上参数扩展的文件名。

e.g。

for file in *.txt ; do mkdir ${file%.*} ; mv $file ${file%.*}/ ; done

这是一个剥离文件加载扩展,根据这些名称创建目录,然后在同名文件夹中移动文件的示例。

如果我想实现类似的东西,比如根据输入文件名重命名函数的输出(下面是Biopython函数的一个例子),我已经看到了一些方法来实现它字符串连接等,但没有包围等等,它看起来很混乱,并且可能会创建解析错误,空格,引号等可能会在整个地方出现。

SeqIO.convert(genbank, 'genbank', genbank[:-3]+'tmp', 'fasta')

这里有关于使用rsplit,字符串连接等的其他线程,但其中一个是更正确的'比另一个?

字符串连接非常好,并且在print()这样的简单命令中运行良好,但是当添加到期望分离值的命令时,它会让我觉得有点混乱?

1 个答案:

答案 0 :(得分:1)

您可以使用专为文件名构建的os.path.splitext

>>> import os
>>> 
>>> fname = '/tmp/foo/bar.baz'
>>> sp = os.path.splitext(fname)
>>> sp
('/tmp/foo/bar', '.baz')

提取没有扩展名的文件名称:

>>> os.path.basename(sp[0])
'bar'

格式化新文件名:

>>> "{}.txt".format(os.path.basename(sp[0]))
'bar.txt'

通常,在操作文件名和路径时,我尝试使用os.path,因为它已处理边缘情况,可以规范化/..//./././等内容的路径。