如何在Python中更改文件名和扩展名?

时间:2016-09-25 10:21:34

标签: python

我想移动并将位于路径malicious.txt的名为/home/dina/A的文件重命名为新位置/home/dina/b,其新名称基于apkName(例如a.apk }或b.apk等)我希望最终名称的扩展名为.json,而不是.apk扩展名 - 例如a.jsonb.json

我试过了:

import os
os.rename("malicious.txt",apkName)

但它删除了malicious.txt而没有出现任何其他文件。

1 个答案:

答案 0 :(得分:0)

以下内容应将“malicious.txt”重命名为apkfile的名称,扩展名为“.json”

import os
apkName = "a.apk"
apkFullpath = os.path.join(os.path.sep,"home","dina","a",apkName)
jsonName = os.path.splitext(apkName)[0]+".json"
jsonFullpath = os.path.join(os.path.sep,"home","dina","b",jsonName)
os.rename("malicious.txt",jsonName)

请注意,您只能重命名一次文件名(在第一次重命名后,您将无法访问旧名称)

有关 os.path.join os.path.sep

的更多信息

https://docs.python.org/2/library/os.path.html

os.path.join(路径,*路径)

智能地加入一个或多个路径组件。返回值是路径和*路径的任何成员的串联,在除了最后一个之外的每个非空部分之后只有一个目录分隔符(os.sep),这意味着如果最后一部分为空,结果将仅在分隔符中结束。如果组件是绝对路径,则抛弃所有先前的组件,并从绝对路径组件继续连接。

在Windows上,遇到绝对路径组件(例如,r'\ foo')时,不会重置驱动器号。如果组件包含驱动器号,则会丢弃所有先前的组件并重置驱动器号。请注意,由于每个驱动器都有一个当前目录,os.path.join(“c:”,“foo”)表示相对于驱动器C上当前目录的路径:(c:foo),而不是c:\ foo