每次执行后创建不同名称的文件夹
Create folder after every execution with different names
我正在尝试制作一个程序,该程序会在文件夹内为每次执行创建一个具有不同名称的新文件夹。我在下面粘贴了我正在使用的代码:
import os
current_directory = os.getcwd()
name = "Day 1"
def folder_create(path, folder_name):
folder_names = [folder for folder in os.listdir(
path) if os.path.isdir(folder)]
if folder_name not in folder_names:
os.makedirs(folder_name)
else:
folder_num = folder_name.split(' ')[1]
new_folder_name = f'Day {int(folder_num) + 1}'
os.makedirs(new_folder_name, exist_ok=False)
folder_name = new_folder_name
return folder_name
if __name__ == '__main__':
name = folder_create(current_directory, name)
print(name)
此代码只能运行两次,这意味着它只能创建两个文件夹,即(第 1 天和第 2 天)执行两次后,但之后会出现 FileExistError。请帮助我找到解决方法,因为我只希望它为每次执行创建一个新文件夹,隔天名称为 i,e(Day 1, Day 2, Day 3)。
此解决方案可能适合您-
import os
import random
current_directory = os.getcwd()
day_names = []
for i in range(0, 10+1): # 10 or Or Other Number+1 To Get Day Names That Number Of Times
day_names.append('Day '+str(i))
def folder_create(path, folder_name):
folder_names = [folder for folder in os.listdir(
path) if os.path.isdir(folder)]
if folder_name not in folder_names:
os.makedirs(folder_name)
else:
folder_num = folder_name.split(' ')[1]
new_folder_name = f'Day {int(folder_num) + random.randint(0, 10000)}' # To Get A Random Day Name If It Already Exixts
os.makedirs(new_folder_name, exist_ok=False)
folder_name = new_folder_name
return folder_name
if __name__ == '__main__':
for name in day_names: # Looping To Get Each Day Name
name = folder_create(current_directory, name)
print(name)
这会很好用。您的代码的真正问题是您一直向 folder_create()
函数提供相同的“名称”参数。
我所做的只是消除了提供名称参数的需要。
它现在所做的是获取目录列表,对列表进行排序,然后使用负索引获取最后一个目录。然后它使用最后一个创建新文件夹名称。玩得开心
import os
current_directory = os.getcwd()
name = "Day 1"
def folder_create(path):
folder_names = [folder for folder in os.listdir(
path) if os.path.isdir(folder)]
folder_names.sort()
if "Day 1" not in folder_names:
os.makedirs('Day 1')
else:
folder_num = folder_names[-1].split(' ')[1]
new_folder_name = f'Day {int(folder_num) + 1}'
os.makedirs(new_folder_name, exist_ok=False)
folder_name = new_folder_name
return folder_name
if __name__ == '__main__':
name = folder_create(current_directory)
print(name)
我正在尝试制作一个程序,该程序会在文件夹内为每次执行创建一个具有不同名称的新文件夹。我在下面粘贴了我正在使用的代码:
import os
current_directory = os.getcwd()
name = "Day 1"
def folder_create(path, folder_name):
folder_names = [folder for folder in os.listdir(
path) if os.path.isdir(folder)]
if folder_name not in folder_names:
os.makedirs(folder_name)
else:
folder_num = folder_name.split(' ')[1]
new_folder_name = f'Day {int(folder_num) + 1}'
os.makedirs(new_folder_name, exist_ok=False)
folder_name = new_folder_name
return folder_name
if __name__ == '__main__':
name = folder_create(current_directory, name)
print(name)
此代码只能运行两次,这意味着它只能创建两个文件夹,即(第 1 天和第 2 天)执行两次后,但之后会出现 FileExistError。请帮助我找到解决方法,因为我只希望它为每次执行创建一个新文件夹,隔天名称为 i,e(Day 1, Day 2, Day 3)。
此解决方案可能适合您-
import os
import random
current_directory = os.getcwd()
day_names = []
for i in range(0, 10+1): # 10 or Or Other Number+1 To Get Day Names That Number Of Times
day_names.append('Day '+str(i))
def folder_create(path, folder_name):
folder_names = [folder for folder in os.listdir(
path) if os.path.isdir(folder)]
if folder_name not in folder_names:
os.makedirs(folder_name)
else:
folder_num = folder_name.split(' ')[1]
new_folder_name = f'Day {int(folder_num) + random.randint(0, 10000)}' # To Get A Random Day Name If It Already Exixts
os.makedirs(new_folder_name, exist_ok=False)
folder_name = new_folder_name
return folder_name
if __name__ == '__main__':
for name in day_names: # Looping To Get Each Day Name
name = folder_create(current_directory, name)
print(name)
这会很好用。您的代码的真正问题是您一直向 folder_create()
函数提供相同的“名称”参数。
我所做的只是消除了提供名称参数的需要。
它现在所做的是获取目录列表,对列表进行排序,然后使用负索引获取最后一个目录。然后它使用最后一个创建新文件夹名称。玩得开心
import os
current_directory = os.getcwd()
name = "Day 1"
def folder_create(path):
folder_names = [folder for folder in os.listdir(
path) if os.path.isdir(folder)]
folder_names.sort()
if "Day 1" not in folder_names:
os.makedirs('Day 1')
else:
folder_num = folder_names[-1].split(' ')[1]
new_folder_name = f'Day {int(folder_num) + 1}'
os.makedirs(new_folder_name, exist_ok=False)
folder_name = new_folder_name
return folder_name
if __name__ == '__main__':
name = folder_create(current_directory)
print(name)