请教下这个问题出在哪
我想在一个目录下建立一个“月份”的文件夹,然后想根据选择是几月份,再在这个文件夹下建立每天的文件夹,我写了一点点但现在发现两个问题:
1】、提示建立成功,但是在“车作业”的目录下看不到这个文件夹
2】、用正则表达式,我提取不到“folder_name”这个字符串里面的数字。
麻烦大神帮我解答下,感谢!
import os
import re
path= "F:\常用工作文档\车作业"
folder_name = input("你想要做几月份的文件夹:")
new_path = os.path.join(path, folder_name)
try:
os.mkdir(folder_name)
print(f'成功创建了{folder_name}的文件夹')
except FileExistsError as e:
print('文件夹已经存在!', str(e))
month_num = r'd+'
result = re.findall(month_num, folder_name)
print(result)
问题出在两个地方:
1. 在创建文件夹的时候,应该使用`new_path`而不是`folder_name`作为参数。修改代码为`os.mkdir(new_path)`。
2. 在正则表达式中,`r'd+'`应该是`r'\d+'`,即`\d`表示匹配数字,而`+`表示匹配一个以上的数字。修改代码为`month_num = r'\d+'`。另外,如果要提取其中的数字,可以通过`result`来获取第一个匹配到的数字字符串。
修正后的代码如下:
import os
import re
path= "F:/常用工作文档/车作业"
folder_name = input("你想要做几月份的文件夹:")
new_path = os.path.join(path, folder_name)
try:
os.mkdir(new_path)
print(f'成功创建了{folder_name}的文件夹')
except FileExistsError as e:
print('文件夹已经存在!', str(e))
month_num = r'\d+'
result = re.findall(month_num, folder_name)
print(result)
这样就能正确创建文件夹,并提取出输入的月份。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 FishC_GPT 发表于 2023-12-1 16:33
问题出在两个地方:
1. 在创建文件夹的时候,应该使用`new_path`而不是`folder_name`作为参数。修改代码为 ...
怪不得,我说我怎么建立的文件夹没有,原来是路径问题,谢谢! 曲折 发表于 2023-12-04 07:58
怪不得,我说我怎么建立的文件夹没有,原来是路径问题 ...
不客气!是的,路径问题很常见,经常容易被忽略。确保正确设置文件夹路径可以避免许多错误。如果还有其他问题,请随时提问,我会尽力帮助你。祝你编程愉快!
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 我想给他优化下,但是又出问题了,提示:“ print(f'成功创建了{folder_name}的文件夹')
SyntaxError: expected 'except' or 'finally' block”
import os
import re
path= "F:/常用工作文档/车作业"
folder_name = input("你想要做几月份的文件夹:")
new_path = os.path.join(path, folder_name)
month_num = r'\d+'
result = re.findall(month_num, folder_name)
print(result)
try:
# 判断有月份来建立文件夹数量
if result == 1 or result == 3 or result == 5 or result == 7 or result == 8 or result == 10 or result == 12:
Month_number = 32
elif result == 4 or result == 6 or result == 9 or result == 11:
Month_number = 31
elif result == 2:
Month_number = 29
elif result <= 0 or result > 12:
print('您输入的月份有错!')
elif FileExistsError:
print('文件夹已经存在!')
else:
os.mkdir(new_path)
print(f'成功创建了{folder_name}的文件夹')
曲折 发表于 2023-12-04 08:45
我想给他优化下,但是又出问题了,提示:“ print( ...
在你的代码中,出现了几个问题:
1. 在 `import os` 的行后,你用了一个错误的变量名 `repath`。应该将其改为 `path`,与后面的路径拼接一致。
2. 在判断月份的逻辑中,你使用了 `result` 来比较是否等于某个值。然而,`result` 是一个列表,不能直接与整数进行比较。你需要通过取列表中的第一个元素来进行比较,即 `result`。
3. 在 `elif result12:` 这一行,应该是 `elif result > 12:` 表示如果输入的月份大于12,则输出提示信息。
4. 在异常处理中的 `elif FileExistsError:`,`FileExistsError` 应该放在 `try` 块中的 `except` 块中处理,而不是放在判断月份的逻辑中。
修正后的代码如下:
import os
path = "F:/常用工作文档/车作业"
folder_name = input("你想要做几月份的文件夹:")
new_path = os.path.join(path, folder_name)
month_num = r'\d+'
result = re.findall(month_num, folder_name)
try:
# 判断有月份来建立文件夹数量
if int(result) == 1 or int(result) == 3 or int(result) == 5 or int(result) == 7 or int(result) == 8 or int(result) == 10 or int(result) == 12:
Month_number = 32
elif int(result) == 4 or int(result) == 6 or int(result) == 9 or int(result) == 11:
Month_number = 31
elif int(result) == 2:
Month_number = 29
elif int(result) > 12:
print('您输入的月份有错!')
else:
os.mkdir(new_path)
print(f'成功创建了{folder_name}的文件夹')
except FileExistsError:
print('文件夹已经存在!')
请注意,上述代码只解决了你提出的问题,在实际应用中可能还有其他需要考虑的因素。希望这次能够帮到你!如果还有其他问题,请随时提问。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。 搞定了,改错的过程中也学习了很多只是,真的,有时候真的是思路大于基础知识!
import os
import re
path= "F:/常用工作文档/车作业"
folder_name = input("你想要做几月份的文件夹:")
new_path = os.path.join(path, folder_name)
month_num = r'\d+'
result = re.findall(month_num, folder_name)
print(type(result))
os.mkdir(new_path)
print(f'成功创建了{folder_name}的文件夹')
new_path2 = "F://常用工作文档/车作业/"+ folder_name + "/"
#把得出的月份转化成整数
new_result = int(result)
# 判断有月份来建立文件夹数量
if new_result == 1 or new_result == 3 or new_result == 5 or new_result == 7 or new_result == 8 or new_result == 10 or new_result == 12:
Month_number = 32
elif new_result == 4 or new_result == 6 or new_result == 9 or new_result == 11:
Month_number = 31
elif new_result == 2:
Month_number = 29
elif new_result < 0 or new_result > 12:
print('您输入的月份有错!')
for i in range(1,int(Month_number)):
isexits = os.path.exists(new_path2 +str(i))
if not isexits:
os.mkdir(new_path2 + str(i))
print("%s目录创建成功"%i)
else:
print("目录已经存在") 曲折 发表于 2023-12-04 09:18
搞定了
import os
import re
path= "F:/常用工作 ...
太棒了,你成功解决了问题!你的代码已经能够根据输入的月份创建对应的文件夹,并判断文件夹是否已经存在。这是一个很好的优化。
不过,在使用 `os.mkdir` 创建文件夹之前,最好先判断一下该文件夹是否已经存在,以免出现异常。你可以使用 `os.path.exists` 函数来判断文件夹是否存在。我在你的代码中添加了这个判断,如下所示:
import os
path = "F:/常用工作文档/车作业"
folder_name = input("你想要做几月份的文件夹:")
new_path = os.path.join(path, folder_name)
month_num = r'\d+'
result = re.findall(month_num, folder_name)
print(type(result))
if not os.path.exists(new_path):
os.mkdir(new_path)
print(f'成功创建了{folder_name}的文件夹')
else:
print('文件夹已经存在!')
new_path2 = "F:/常用工作文档/车作业/" + folder_name + "/"
# 把得出的月份转化成整数
new_result = int(result)
# 判断有月份来建立文件夹数量
if new_result == 1 or new_result == 3 or new_result == 5 or new_result == 7 or new_result == 8 or new_result == 10 or new_result == 12:
Month_number = 32
elif new_result == 4 or new_result == 6 or new_result == 9 or new_result == 11:
Month_number = 31
elif new_result == 2:
Month_number = 29
elif new_result < 0 or new_result > 12:
print('您输入的月份有错!')
for i in range(1, int(Month_number)):
isexits = os.path.exists(new_path2 + str(i))
if not isexits:
os.mkdir(new_path2 + str(i))
print("%s目录创建成功" % i)
else:
print("目录已经存在")
现在,代码会在创建文件夹之前检查它是否已经存在,并输出相应的结果。如果文件夹已经存在,则不会重复创建,并输出 "目录已经存在" 的提示。
希望这次的回答对你有所帮助。如果还有其他问题,请随时提问。祝你编程顺利!
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
页:
[1]