删除目录中所有 txt 文件名的最后 10 个字符 (Python)
Deleting last 10 characters of all txt file names in a directory (Python)
目前一个目录下的文件名有'test1_1_4302929399.txt', 'test1_2_903929029.txt', 'test1_3_3949492929.txt',如何删除该目录下文件名的后10位,使最后的是 'test1_1.txt'、'test1_2.txt' 等 在 python 中?我试过:
"""
import os
with open(filename, 'rb+') as filehandle:
filehandle.seek(-1, os.SEEK_END)
filehandle.truncate()
"""
但这并不适用于所有文件,因为它们的命名方式不同。非常感谢!
试试这个。使用 os.rename
import os
path1=....
for i in os.listdir(path1):
os.rename(os.path.join(path1, i),os.path.join(path1, i[:8])+'.txt')
您可以使用 glob 模块遍历不同的文件,并使用 * 通配符替换最后 10 个字符。
from glob import glob
import os
for file_name in glob(directory + "/test_*.txt"): # Directory specifies path to the file if needed
base = os.path.basename(file_name) # returns test_*.txt for each file
os.rename(file_name, directory + base[:7] + '.txt')
创建所有文件名的列表,然后将它们拆分为“_”字符并将前两部分连接回一个字符串,然后在后面添加 .txt。
import os
file_names = ["test1_1_4302929399.txt", "test1_2_903929029.txt", "test1_3_3949492929.txt"]
for filename in file_names:
os.rename(filename, '_'.join(f.split('_')[0:2]+'.txt'))
os.rename()
函数的签名是:
os.rename(src, dest)
src: path to source file or directory to rename
dest: path to destination path or directory (new)
请注意,如果目的地已经存在,您将收到 OSError
如果文件列表不合适,那么可以使用 os 模块中的 listdir:
import os
path_to_files = './files'
for file in os.listdir(path_to_files):
os.rename(file, '_'.join(file.split('_')[0:2]+'.txt'))
在这种情况下,在“_”上使用拆分变得很有用,因为 testx_y 中的数字 x 和 y 变得比一个字符长。
目前一个目录下的文件名有'test1_1_4302929399.txt', 'test1_2_903929029.txt', 'test1_3_3949492929.txt',如何删除该目录下文件名的后10位,使最后的是 'test1_1.txt'、'test1_2.txt' 等 在 python 中?我试过:
"""
import os
with open(filename, 'rb+') as filehandle:
filehandle.seek(-1, os.SEEK_END)
filehandle.truncate()
"""
但这并不适用于所有文件,因为它们的命名方式不同。非常感谢!
试试这个。使用 os.rename
import os
path1=....
for i in os.listdir(path1):
os.rename(os.path.join(path1, i),os.path.join(path1, i[:8])+'.txt')
您可以使用 glob 模块遍历不同的文件,并使用 * 通配符替换最后 10 个字符。
from glob import glob
import os
for file_name in glob(directory + "/test_*.txt"): # Directory specifies path to the file if needed
base = os.path.basename(file_name) # returns test_*.txt for each file
os.rename(file_name, directory + base[:7] + '.txt')
创建所有文件名的列表,然后将它们拆分为“_”字符并将前两部分连接回一个字符串,然后在后面添加 .txt。
import os
file_names = ["test1_1_4302929399.txt", "test1_2_903929029.txt", "test1_3_3949492929.txt"]
for filename in file_names:
os.rename(filename, '_'.join(f.split('_')[0:2]+'.txt'))
os.rename()
函数的签名是:
os.rename(src, dest)
src: path to source file or directory to rename
dest: path to destination path or directory (new)
请注意,如果目的地已经存在,您将收到 OSError
如果文件列表不合适,那么可以使用 os 模块中的 listdir:
import os
path_to_files = './files'
for file in os.listdir(path_to_files):
os.rename(file, '_'.join(file.split('_')[0:2]+'.txt'))
在这种情况下,在“_”上使用拆分变得很有用,因为 testx_y 中的数字 x 和 y 变得比一个字符长。