将文件名重命名为 python3 中的整数序列
renaming filenames to integer sequence in python3
我需要重命名包含许多文本文件的文件夹中的文件名。
重命名应遵循每个文件的编号顺序。
它应该如下所示:
***given files*** ***renamed files***
abc.txt 1.txt
def.txt 2.txt
rsd.txt 3.txt
ijb.txt 4.txt
以上文件位于名为 data
的文件夹中
我的代码是这样的
import glob
import os
file=sorted(glob.glob("/home/prasanth/Desktop/project/prgms/dt/details/*.txt"))
fp=[]
for b in file:
fp.append(b)
i=1
for f in fp:
n=f.replace('.html','')
n=n.replace('.htm','')
m=n.replace(n,str(i)+'.txt')
i=i+1
os.rename(f,m)
我的问题是重命名后的文件正在移动到 python 代码所在的文件夹中 written.but 我需要将重命名的文件放在它们之前存在的同一文件夹中
太好了,那么你尝试了什么?
作为起点,请查看 os
-module, especially os.walk()
and os.rename()
。
编辑:
您的文件已移动,因为您将整个路径替换为带有 m=n.replace(n,str(i)+'.txt')
的数字。这会将 subfolder\textfile.txt
重命名为 1.txt
,作为副作用将文件移动到当前目录。
我也不确定你试图用 htm(l)-replaces 实现什么,因为之后你用你的号码替换了所有东西。
此外,您不需要构建 txt 文件列表的副本然后对其进行迭代,您可以直接在原始文件列表上进行。
所以这可能对你有用:
import glob
import os
filelist=sorted(glob.glob("/home/prasanth/Desktop/project/prgms/dt/details/*.txt"))
i=1
for oldname in filelist:
# ignore directories
if os.path.isfile(oldname):
# keep original path
basepath=os.path.split(oldname)[0]
newname=os.path.join(basepath, "{}.txt".format(str(i)))
i=i+1
print("Renaming {} to {}".format(oldname, newname))
os.rename(oldname, newname)
旁注:当具有新文件名的文件已经存在时,重命名将失败。你应该用 try ... except
.
来处理
我需要重命名包含许多文本文件的文件夹中的文件名。 重命名应遵循每个文件的编号顺序。 它应该如下所示:
***given files*** ***renamed files***
abc.txt 1.txt
def.txt 2.txt
rsd.txt 3.txt
ijb.txt 4.txt
以上文件位于名为 data
我的代码是这样的
import glob
import os
file=sorted(glob.glob("/home/prasanth/Desktop/project/prgms/dt/details/*.txt"))
fp=[]
for b in file:
fp.append(b)
i=1
for f in fp:
n=f.replace('.html','')
n=n.replace('.htm','')
m=n.replace(n,str(i)+'.txt')
i=i+1
os.rename(f,m)
我的问题是重命名后的文件正在移动到 python 代码所在的文件夹中 written.but 我需要将重命名的文件放在它们之前存在的同一文件夹中
太好了,那么你尝试了什么?
作为起点,请查看 os
-module, especially os.walk()
and os.rename()
。
编辑:
您的文件已移动,因为您将整个路径替换为带有 m=n.replace(n,str(i)+'.txt')
的数字。这会将 subfolder\textfile.txt
重命名为 1.txt
,作为副作用将文件移动到当前目录。
我也不确定你试图用 htm(l)-replaces 实现什么,因为之后你用你的号码替换了所有东西。
此外,您不需要构建 txt 文件列表的副本然后对其进行迭代,您可以直接在原始文件列表上进行。
所以这可能对你有用:
import glob
import os
filelist=sorted(glob.glob("/home/prasanth/Desktop/project/prgms/dt/details/*.txt"))
i=1
for oldname in filelist:
# ignore directories
if os.path.isfile(oldname):
# keep original path
basepath=os.path.split(oldname)[0]
newname=os.path.join(basepath, "{}.txt".format(str(i)))
i=i+1
print("Renaming {} to {}".format(oldname, newname))
os.rename(oldname, newname)
旁注:当具有新文件名的文件已经存在时,重命名将失败。你应该用 try ... except
.