gpt4 book ai didi

python - 如何删除 python try/except block 中的重复异常错误?

转载 作者:行者123 更新时间:2023-11-30 21:58:09 25 4
gpt4 key购买 nike

我是一名新的Python程序员,一直在制作一个文件排序函数来获取文件名并将其整齐地排列在年/月/日的文件结构中。下面的代码可以工作,但看起来很难看,并且有很多重复的异常错误,我想删除它们。很想知道如何提高此代码的效率,因为它会频繁运行。提前致谢

def fileSort(day, month, year, file):
global filewritten

try: os.makedirs(togoto + '/' + year)
except FileExistsError:
pass
try: os.makedirs(togoto + '/' + year + '/' + month)
except FileExistsError:
pass
try:
os.makedirs(togoto + '/' + year + '/' + month + '/' + day)
except FileExistsError:
pass
try:
shutil.move(path + '/' + file,
togoto + '/' + year + '/' + month + '/' + day + '/' + file)
filewritten += 1

except FileExistsError:
pass

最佳答案

os.makedirs() already creates the directories leading to the given path ,所以应该足够了

try:
os.makedirs(togoto + '/' + year + '/' + month + '/' + day)
except FileExistsError:
pass
try:
shutil.move(path + '/' + file,
togoto + '/' + year + '/' + month + '/' + day + '/' + file)
filewritten += 1

except FileExistsError:
pass

这是对原始版本的一点改进。

顺便说一句,os.path.join() 是你的 friend :

source = os.path.join(path, file)
targetdir = os.path.join(togoto, year, month, day)
target = os.path.join(togoto, year, month, day, file)
try:
os.makedirs(targetdir)
except FileExistsError:
pass
try:
shutil.move(source, target)
filewritten += 1

except FileExistsError:
pass

如果您的 Python 足够新,最好使用 os.makedirs() 的所有功能:

source = os.path.join(path, file)
targetdir = os.path.join(togoto, year, month, day)
target = os.path.join(targetdir, file)

os.makedirs(targetdir, exist_ok=True) # i. e. no exception on an already existing path.
try:
shutil.move(source, target)
filewritten += 1
except FileExistsError:
pass

关于python - 如何删除 python try/except block 中的重复异常错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55027430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com