鱼C论坛

 找回密码
 立即注册
查看: 1322|回复: 7

请教下这个问题出在哪

[复制链接]
发表于 2023-12-1 16:32:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我想在一个目录下建立一个“月份”的文件夹,然后想根据选择是几月份,再在这个文件夹下建立每天的文件夹,我写了一点点
但现在发现两个问题:
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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-1 16:33:13 | 显示全部楼层
问题出在两个地方:

1. 在创建文件夹的时候,应该使用`new_path`而不是`folder_name`作为参数。修改代码为`os.mkdir(new_path)`。
2. 在正则表达式中,`r'd+'`应该是`r'\d+'`,即`\d`表示匹配数字,而`+`表示匹配一个以上的数字。修改代码为`month_num = r'\d+'`。另外,如果要提取其中的数字,可以通过`result[0]`来获取第一个匹配到的数字字符串。

修正后的代码如下:
import osimport repath= "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[0])
这样就能正确创建文件夹,并提取出输入的月份。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-4 07:58:24 | 显示全部楼层
FishC_GPT 发表于 2023-12-1 16:33
问题出在两个地方:

1. 在创建文件夹的时候,应该使用`new_path`而不是`folder_name`作为参数。修改代码为 ...

怪不得,我说我怎么建立的文件夹没有,原来是路径问题,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-4 07:58:32 | 显示全部楼层
曲折 发表于 2023-12-04 07:58
怪不得,我说我怎么建立的文件夹没有,原来是路径问题 ...

不客气!是的,路径问题很常见,经常容易被忽略。确保正确设置文件夹路径可以避免许多错误。如果还有其他问题,请随时提问,我会尽力帮助你。祝你编程愉快!

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-4 08:45:41 | 显示全部楼层
我想给他优化下,但是又出问题了,提示:“    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[0])

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}的文件夹')

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-4 08:46:00 | 显示全部楼层
曲折 发表于 2023-12-04 08:45
我想给他优化下,但是又出问题了,提示:“    print( ...

在你的代码中,出现了几个问题:

1. 在 `import os` 的行后,你用了一个错误的变量名 `repath`。应该将其改为 `path`,与后面的路径拼接一致。

2. 在判断月份的逻辑中,你使用了 `result` 来比较是否等于某个值。然而,`result` 是一个列表,不能直接与整数进行比较。你需要通过取列表中的第一个元素来进行比较,即 `result[0]`。

3. 在 `elif result  12:` 这一行,应该是 `elif result > 12:` 表示如果输入的月份大于12,则输出提示信息。

4. 在异常处理中的 `elif FileExistsError:`,`FileExistsError` 应该放在 `try` 块中的 `except` 块中处理,而不是放在判断月份的逻辑中。

修正后的代码如下:
import ospath = "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[0]) == 1 or int(result[0]) == 3 or int(result[0]) == 5 or int(result[0]) == 7 or int(result[0]) == 8 or int(result[0]) == 10 or int(result[0]) == 12:        Month_number = 32    elif int(result[0]) == 4 or int(result[0]) == 6 or int(result[0]) == 9 or int(result[0]) == 11:        Month_number = 31    elif int(result[0]) == 2:        Month_number = 29    elif int(result[0]) > 12:        print('您输入的月份有错!')    else:        os.mkdir(new_path)        print(f'成功创建了{folder_name}的文件夹')except FileExistsError:    print('文件夹已经存在!')
请注意,上述代码只解决了你提出的问题,在实际应用中可能还有其他需要考虑的因素。希望这次能够帮到你!如果还有其他问题,请随时提问。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-4 09:18:26 | 显示全部楼层
搞定了,改错的过程中也学习了很多只是,真的,有时候真的是思路大于基础知识!
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[0]))

os.mkdir(new_path)
print(f'成功创建了{folder_name}的文件夹')

new_path2 = "F://常用工作文档/车作业/"+ folder_name + "/"
#把得出的月份转化成整数
new_result = int(result[0])

# 判断有月份来建立文件夹数量
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("目录已经存在")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-4 09:18:44 | 显示全部楼层
曲折 发表于 2023-12-04 09:18
搞定了
import os
import re

path= "F:/常用工作 ...

太棒了,你成功解决了问题!你的代码已经能够根据输入的月份创建对应的文件夹,并判断文件夹是否已经存在。这是一个很好的优化。

不过,在使用 `os.mkdir` 创建文件夹之前,最好先判断一下该文件夹是否已经存在,以免出现异常。你可以使用 `os.path.exists` 函数来判断文件夹是否存在。我在你的代码中添加了这个判断,如下所示:
import ospath = "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 = 32elif new_result == 4 or new_result == 6 or new_result == 9 or new_result == 11:    Month_number = 31elif new_result == 2:    Month_number = 29elif 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官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 17:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表