Python 如何按扩展名添加文件';文件名_ext';。txt和递归地转换到文件夹中的所有文件,并将它们转换回原始扩展名
我有一个代码,可以递归地将文件夹中扩展名为.py的所有文件更改为.txt。 即:Python 如何按扩展名添加文件';文件名_ext';。txt和递归地转换到文件夹中的所有文件,并将它们转换回原始扩展名,python,file,directory,scripting,filesystems,Python,File,Directory,Scripting,Filesystems,我有一个代码,可以递归地将文件夹中扩展名为.py的所有文件更改为.txt。 即: def frm_ext_to_ext(directory, from_ext, to_ext): """ directory, from_ext, to_ext should be passed as strings including '.' For example : directory = '/home/Desktop/folder/file', from_ext
def frm_ext_to_ext(directory, from_ext, to_ext):
"""
directory, from_ext, to_ext should be passed as strings including '.'
For example : directory = '/home/Desktop/folder/file', from_ext = '.txt' , to_ext = '.py'
"""
for foldername, subfolders, filenames in os.walk(directory):
for f in filenames :
if f.endswith('.py'):
base = os.path.splitext(f)[0]
os.rename(os.path.join(foldername, f), os.path.join(foldername, base + to_ext))
但我想更改文件名,如下所示:
如果文件名是script.py
,我希望将其更改为每个文件扩展名的script\u py.txt
,并希望使用另一个函数来反转此更改,即从script\u py.txt
更改为script.py
。
注意:上面的.py
只是一个例子。扩展可以是类似于,.pynb等的任何内容
另外,如果扩展名已经是
.txt
,我希望它保持原样。有什么帮助吗?我希望这就是你想要的
为了更安全,您应该执行一个脚本来检查是否有一个文件包含多个“.”
def frm_ext_to_ext(directory, from_ext, to_ext):
for foldername, subfolders, filenames in os.walk(directory):
for f in filenames :
ext = f.split('.')[1]
if(ext!='txt' and to_ext == 'txt'):
base = f.split('.')[0]
os.rename(os.path.join(foldername, f), os.path.join(foldername, base + '_' + ext + '.' + to_ext))
elif(ext=='txt' and to_ext!='txt'):
base=f.split('_')[0]
os.rename(os.path.join(foldername, f), os.path.join(foldername, base + '.' + to_ext))
用法:
frm_ext_to_ext(DIR, 'py', 'txt')
frm_ext_to_ext(DIR, 'txt', 'py')
我希望这就是你想要的 为了更安全,您应该执行一个脚本来检查是否有一个文件包含多个“.”
def frm_ext_to_ext(directory, from_ext, to_ext):
for foldername, subfolders, filenames in os.walk(directory):
for f in filenames :
ext = f.split('.')[1]
if(ext!='txt' and to_ext == 'txt'):
base = f.split('.')[0]
os.rename(os.path.join(foldername, f), os.path.join(foldername, base + '_' + ext + '.' + to_ext))
elif(ext=='txt' and to_ext!='txt'):
base=f.split('_')[0]
os.rename(os.path.join(foldername, f), os.path.join(foldername, base + '.' + to_ext))
用法:
frm_ext_to_ext(DIR, 'py', 'txt')
frm_ext_to_ext(DIR, 'txt', 'py')
由于扩展名是在文件名中的点字符之后添加的,因此我们可以使用file_name.split(“.”)将文件名拆分为“.”,并将最后一个元素附加到文件名。 例如,我的“D:\FlaskApp”目录中有以下文件
app.py
runApp.bat
demo.html
index.html
使用拆分附加扩展名:
import os
directory = "D:\FlaskApp"
for foldername, subfolders, filenames in os.walk(directory):
for f in filenames :
fl = f.split(".")
print(fl[0] + "_" + fl[-1])
这使得:
app_py
runApp_bat
demo_html
index_html
由于扩展名是在文件名中的点字符之后添加的,因此我们可以使用file_name.split(“.”)将文件名拆分为“.”,并将最后一个元素附加到文件名。 例如,我的“D:\FlaskApp”目录中有以下文件
app.py
runApp.bat
demo.html
index.html
使用拆分附加扩展名:
import os
directory = "D:\FlaskApp"
for foldername, subfolders, filenames in os.walk(directory):
for f in filenames :
fl = f.split(".")
print(fl[0] + "_" + fl[-1])
这使得:
app_py
runApp_bat
demo_html
index_html
好的,听起来像是一些简单的字符串操作。你能把你试过的都写进去吗?好的,听起来像是一些简单的字符串操作。你能把你尝试过的东西包括进来吗?这没关系,但我不想把
py
和txt
作为参数。我只希望我的参数是dir
。将任何file.ext
转换为file\u ext.txt
的函数,以及将file\u ext.txt
转换为file.ext
的其他函数。请注意,我希望将这些函数同时递归地应用于文件夹、文件和子文件夹。这没关系,但我不希望将py
和txt
作为参数。我只希望我的参数是dir
。将任何file.ext
转换为file\u ext.txt
的函数,以及将file\u ext.txt
转换为file.ext
的其他函数。请注意,我希望将这些函数递归地应用于文件夹、文件和子文件夹。