如何更改列表中文件的文件扩展名
How to change the file extension in files in a list
我有打开包含这些目录的文件夹的代码。其中一些具有扩展名 html 但不是全部。如何更改我的三个子目录中没有扩展名 html in .html 的所有文件?
from os import walk
mypath = ("/directory/path/to/folder")
f = []
for (dirpath,dirnames,filenames) in walk(mypath):
f.extend(filenames)
print(f)
首先,用下面的函数写一个图片路径生成器。
import os
def getimagepath(root_path):
for root,dirs,filenames in os.walk(root_path):
for filename in filenames:
yield(os.path.join(root,filename))
在函数中输入您的文件夹路径。然后 运行 一个 for 循环检查以 html 结尾的名称,然后将名称更改为 os.rename
paths = getimagepath("............................")
for path in paths:
if not path.endswith('.html'):
os.rename(path,path+'.html')
ff = []
for (dirpath,dirnames,filenames) in os.walk(mypath):
for f in filenames:
if not f.endswith(".html"): #check if filename does not have html ext
new_name = os.path.join(dirpath,f+".html")
os.rename(os.path.join(dirpath,f),new_name) #rename the file
ff.append(f+".html")
else:
ff.append(f)
print(ff)
用你的路径调用这个函数。
import os
import os.path
def ensure_html_suffix(top):
for dirpath, _, filenames in os.walk(top):
for filename in filenames:
if not filename.endswith('.html'):
src_path = os.path.join(dirpath, filename)
os.rename(src_path, f'{src_path}.html')
如果您使用 Python 3.4 或更高版本,请考虑使用 pathlib。
这里有一个解决你的问题的方法:
from pathlib import Path
mypath = Path('/directory/path/to/folder')
for f in mypath.iterdir():
if f.is_file() and not f.suffix:
f.rename(f.with_suffix('.html'))
如果您还需要向下遍历子目录,可以使用Path.glob()
方法递归列出所有目录,然后处理该目录中的每个文件。像这样:
from pathlib import Path
mypath = Path('/directory/path/to/folder')
for dir in mypath.glob('**'):
for f in dir.iterdir():
if f.is_file() and not f.suffix:
f.rename(f.with_suffix('.html'))
这是另一种遍历所有目录并处理所有文件的方法:
from pathlib import Path
mypath = Path('/directory/path/to/folder')
for f in mypath.glob('*'):
if f.is_file() and not f.suffix:
f.rename(f.with_suffix('.html'))
使用带两个星号的 Path.glob()
将列出所有子目录,使用一个星号将列出该路径下的所有内容。
希望对您有所帮助。
如果您只想重命名特定后缀,请执行以下操作:
from pathlib import Path
path = Path('./dir')
for f in path.iterdir():
if f.is_file() and f.suffix in ['.txt']:
f.rename(f.with_suffix('.md'))
我有打开包含这些目录的文件夹的代码。其中一些具有扩展名 html 但不是全部。如何更改我的三个子目录中没有扩展名 html in .html 的所有文件?
from os import walk
mypath = ("/directory/path/to/folder")
f = []
for (dirpath,dirnames,filenames) in walk(mypath):
f.extend(filenames)
print(f)
首先,用下面的函数写一个图片路径生成器。
import os
def getimagepath(root_path):
for root,dirs,filenames in os.walk(root_path):
for filename in filenames:
yield(os.path.join(root,filename))
在函数中输入您的文件夹路径。然后 运行 一个 for 循环检查以 html 结尾的名称,然后将名称更改为 os.rename
paths = getimagepath("............................")
for path in paths:
if not path.endswith('.html'):
os.rename(path,path+'.html')
ff = []
for (dirpath,dirnames,filenames) in os.walk(mypath):
for f in filenames:
if not f.endswith(".html"): #check if filename does not have html ext
new_name = os.path.join(dirpath,f+".html")
os.rename(os.path.join(dirpath,f),new_name) #rename the file
ff.append(f+".html")
else:
ff.append(f)
print(ff)
用你的路径调用这个函数。
import os
import os.path
def ensure_html_suffix(top):
for dirpath, _, filenames in os.walk(top):
for filename in filenames:
if not filename.endswith('.html'):
src_path = os.path.join(dirpath, filename)
os.rename(src_path, f'{src_path}.html')
如果您使用 Python 3.4 或更高版本,请考虑使用 pathlib。
这里有一个解决你的问题的方法:
from pathlib import Path
mypath = Path('/directory/path/to/folder')
for f in mypath.iterdir():
if f.is_file() and not f.suffix:
f.rename(f.with_suffix('.html'))
如果您还需要向下遍历子目录,可以使用Path.glob()
方法递归列出所有目录,然后处理该目录中的每个文件。像这样:
from pathlib import Path
mypath = Path('/directory/path/to/folder')
for dir in mypath.glob('**'):
for f in dir.iterdir():
if f.is_file() and not f.suffix:
f.rename(f.with_suffix('.html'))
这是另一种遍历所有目录并处理所有文件的方法:
from pathlib import Path
mypath = Path('/directory/path/to/folder')
for f in mypath.glob('*'):
if f.is_file() and not f.suffix:
f.rename(f.with_suffix('.html'))
使用带两个星号的 Path.glob()
将列出所有子目录,使用一个星号将列出该路径下的所有内容。
希望对您有所帮助。
如果您只想重命名特定后缀,请执行以下操作:
from pathlib import Path
path = Path('./dir')
for f in path.iterdir():
if f.is_file() and f.suffix in ['.txt']:
f.rename(f.with_suffix('.md'))