我是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()
这样的简单命令中运行良好,但是当添加到期望分离值的命令时,它会让我觉得有点混乱?
答案 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
,因为它已处理边缘情况,可以规范化/..//./././
等内容的路径。