重命名时出现权限错误 python
Getting Permission error when renaming python
我想用我的 python 脚本重命名文件和子目录。
简单地替换“。”带空格。
示例目录树:
.\fsdf.trsd.nf.g
.\beautifyer.py
.\lsWithSdir.py
.\fsdf.trsd.nf.g\fe.gre.asd
.\fsdf.trsd.nf.g\fa.tr.b.d.txt
.\fsdf.trsd.nf.g\fe.gre.asd\new.path
.\fsdf.trsd.nf.g\fe.gre.asd\New.Text.Document.txt
import os
from os.path import isdir
# prompt user for path
dirPath = input("enter path of dir where the files are\n")
# subs = input("do you want to include renaming for subdirectories? (y/n)\n")
# change to path
os.chdir(dirPath)
# replace spaces
def replace_spaces(file_name):
new_name = file_name.replace(".", " ")
return new_name
def checkType(filePath, file):
if os.path.isdir(file):
new_name = replace_spaces(file)
os.rename(filePath, os.path.join(filePath , new_name))
else:
file_name, file_ext = os.path.splitext(file)
new_name = replace_spaces(file_name)
os.rename(filePath, os.path.join(filePath , new_name + file_ext))
def get_items(dirPath):
for path, subdirs, files in os.walk(dirPath):
for name in subdirs:
file_path = os.path.join(path)
# doStuff(file_path, name)
print(file_path + " | " + name)
checkType(file_path, name)
for name in files:
file_path = os.path.join(path)
checkType(file_path, name)
get_items(dirPath)
错误:
. | fsdf.trsd.nf.g
Traceback (most recent call last):
File ".\beautifyer.py", line 41, in
get_items(dirPath)
File ".\beautifyer.py", line 35, in get_items
checkType(file_path, name)
File ".\beautifyer.py", line 21, in checkType
os.rename(filePath, os.path.join(filePath , new_name))
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: '.' -> '.\fsdf trsd nf g'
您发送错误的文件路径以检查类型功能,请参阅修改后的代码如下:
import os
from os.path import isdir
# prompt user for path
dirPath = input("enter path of dir where the files are\n")
# replace spaces
def replace_spaces(file_name):
new_name = file_name.replace(".", " ")
return new_name
def checkType(filePath, file):
if os.path.isdir(filePath):
new_name = replace_spaces(file)
os.rename(filePath, os.path.join(os.path.dirname(filePath) , new_name))
else:
file_name, file_ext = os.path.splitext(file)
new_name = replace_spaces(file_name)
os.rename(filePath, os.path.join(os.path.dirname( filePath) , new_name + file_ext))
def get_items(dirPath):
for path, subdirs, files in os.walk(dirPath):
for name in subdirs:
file_path = os.path.join(path,name)
# doStuff(file_path, name)
print(file_path + " | " + name)
checkType(file_path, name)
for name in files:
file_path = os.path.join(path, name)
checkType(file_path, name)
get_items(dirPath)
我想用我的 python 脚本重命名文件和子目录。
简单地替换“。”带空格。
示例目录树:
.\fsdf.trsd.nf.g
.\beautifyer.py
.\lsWithSdir.py
.\fsdf.trsd.nf.g\fe.gre.asd
.\fsdf.trsd.nf.g\fa.tr.b.d.txt
.\fsdf.trsd.nf.g\fe.gre.asd\new.path
.\fsdf.trsd.nf.g\fe.gre.asd\New.Text.Document.txt
import os
from os.path import isdir
# prompt user for path
dirPath = input("enter path of dir where the files are\n")
# subs = input("do you want to include renaming for subdirectories? (y/n)\n")
# change to path
os.chdir(dirPath)
# replace spaces
def replace_spaces(file_name):
new_name = file_name.replace(".", " ")
return new_name
def checkType(filePath, file):
if os.path.isdir(file):
new_name = replace_spaces(file)
os.rename(filePath, os.path.join(filePath , new_name))
else:
file_name, file_ext = os.path.splitext(file)
new_name = replace_spaces(file_name)
os.rename(filePath, os.path.join(filePath , new_name + file_ext))
def get_items(dirPath):
for path, subdirs, files in os.walk(dirPath):
for name in subdirs:
file_path = os.path.join(path)
# doStuff(file_path, name)
print(file_path + " | " + name)
checkType(file_path, name)
for name in files:
file_path = os.path.join(path)
checkType(file_path, name)
get_items(dirPath)
错误:
. | fsdf.trsd.nf.g Traceback (most recent call last):
File ".\beautifyer.py", line 41, in
get_items(dirPath)
File ".\beautifyer.py", line 35, in get_items
checkType(file_path, name)
File ".\beautifyer.py", line 21, in checkType
os.rename(filePath, os.path.join(filePath , new_name))
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: '.' -> '.\fsdf trsd nf g'
您发送错误的文件路径以检查类型功能,请参阅修改后的代码如下:
import os
from os.path import isdir
# prompt user for path
dirPath = input("enter path of dir where the files are\n")
# replace spaces
def replace_spaces(file_name):
new_name = file_name.replace(".", " ")
return new_name
def checkType(filePath, file):
if os.path.isdir(filePath):
new_name = replace_spaces(file)
os.rename(filePath, os.path.join(os.path.dirname(filePath) , new_name))
else:
file_name, file_ext = os.path.splitext(file)
new_name = replace_spaces(file_name)
os.rename(filePath, os.path.join(os.path.dirname( filePath) , new_name + file_ext))
def get_items(dirPath):
for path, subdirs, files in os.walk(dirPath):
for name in subdirs:
file_path = os.path.join(path,name)
# doStuff(file_path, name)
print(file_path + " | " + name)
checkType(file_path, name)
for name in files:
file_path = os.path.join(path, name)
checkType(file_path, name)
get_items(dirPath)