更改Python中的文件扩展名
假设使用 CGI 从 index.py
中,我有发布文件 foo.fasta
来显示文件。我想在显示文件中将 foo.fasta
的文件扩展名更改为 foo.aln
。我该怎么做呢?
Suppose from index.py
with CGI, I have post file foo.fasta
to display file. I want to change foo.fasta
's file extension to be foo.aln
in display file. How can I do it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
使用 pathlib.Path 的优雅方式:
An elegant way using pathlib.Path:
os.path.splitext()
< /a>,os.rename()
例如:
os.path.splitext()
,os.rename()
for example:
其中 thisFile = 您要更改的文件的绝对路径
Where thisFile = the absolute path of the file you are changing
从 Python 3.4 开始,有 pathlib 内置库。所以代码可能是这样的:
https://docs.python .org/3.4/library/pathlib.html#pathlib.PurePath.stem
我喜欢 pathlib :)
Starting from Python 3.4 there's pathlib built-in library. So the code could be something like:
https://docs.python.org/3.4/library/pathlib.html#pathlib.PurePath.stem
I love pathlib :)
使用这个:
下面是上面的工作原理:
splitext 方法将名称与创建元组的扩展分开:
创建的元组现在包含字符串“name”和“fasta”。
然后您只需要访问字符串“name”,它是元组的第一个元素:
然后您想为该名称添加新的扩展名:
Use this:
And here is how the above works:
The splitext method separates the name from the extension creating a tuple:
the created tuple now contains the strings "name" and "fasta".
Then you need to access only the string "name" which is the first element of the tuple:
And then you want to add a new extension to that name:
正如 AnaPana 提到的,pathlib 在 python 3.4 中更加新、更容易,并且有新的 with_suffix 方法可以轻松处理这个问题:
As AnaPana mentioned pathlib is more new and easier in python 3.4 and there is new with_suffix method that can handle this problem easily:
使用 pathlib 并保留完整路径:
Using pathlib and preserving full path:
遗憾的是,我遇到了文件名上有多个点的情况,分割文本效果不佳......我的解决方法:
Sadly, I experienced a case of multiple dots on file name that splittext does not worked well... my work around:
重复扩展的逻辑错误,示例:'C:\Docs\.xls_aaa.xls.xls'
Bad logic for repeating extension, sample: 'C:\Docs\.xls_aaa.xls.xls'