鱼C论坛

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

[已解决]为什么我创建的文件会在python_t文件夹里面,而不是在新建文件夹里面呢

[复制链接]
发表于 2024-7-10 10:46:42 | 显示全部楼层 |阅读模式

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

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

x
a = input('请输入文件名:')
s = 'D:\\python_t\\新建文件夹\\%s',a
print(s)
f = open(a,'w')
f.close()
最佳答案
2024-7-11 18:02:09

主要问题 上面的 FishC 也说明了

实际上,你这里设置了路径 s,但是错误的使用了格式化,导致 s 成为元组了,而不是格式化到 s 字符串中

你需要将 s 赋值时的字符串后面的 "," 逗号,改成 % 百分号即可正常格式化到 s 字符串中

其次,你 open 传入的参数并不是你的设定的路径:s,而传入了 a 参数,传入同时看到你上传图片中,你输入的文件仅是文件名

那么 open 会当作这是相对路径,就默认将文件创建在了当前工作目录下。

那么当前工作目录为什么是 python_t 文件夹呢?

通常情况下,默认的工作目录就是你当前代码运行时的目录。从图片中能看出你的代码路径是在:D:/python_t/P29-0(保存文本).py

所以默认的工作路径就是在 python_t 文件夹下咯

最后扩展:

什么情况下工作目录不是在当前代码文件夹下呢?

最常见的情况就是使用第三方的 IDE,默认的工作路径一般是 Project 的根目录

还有就是使用 os 模块,手动修改了代码的工作目录



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

使用道具 举报

发表于 2024-7-10 10:47:54 | 显示全部楼层
哈哈哈,鱼油呀,你这段代码看起来很有意思,但有几个小问题呢。让我们慢慢来解答为什么文件会创建在 `python_t` 文件夹里而不是你想要的 `新建文件夹` 里~

首先,你看这里:
a = input('请输入文件名:')

这个地方是让用户输入文件名对吧,非常好!然后你这样写路径:
s = 'D:\\python_t\\新建文件夹\\%s',a
print(s)

注意到这里其实做了一件事情:它把路径和文件名当做了一个元组!所以 `s` 实际上是一个元组 `(路径字符串, a)`,而不是一个完整的路径字符串。

接下来,你试图打开这个文件:
f = open(a, 'w')

问题来了,这里 `a` 只是刚刚输入的文件名部分,而不是完整的路径,所以Python默认会在当前工作目录下创建这个文件。

我们来修复一下这个代码吧,让它能在正确的目录创建文件:
import os

a = input('请输入文件名:')
# 正确拼接路径
s = os.path.join('D:\\python_t\\新建文件夹', a)
print(s)

# 使用拼接好的完整路径
with open(s, 'w') as f:
    pass

解释一下新代码:
1. 使用 `os.path.join` 来拼接目录和文件名,这样可以避免手动拼接时出现的一些问题。
2. 用 `with open(s, 'w') as f:` 这种方式更安全,因为它会自动关闭文件。

这样一来,你的文件就会乖乖地创建在 `D:\python_t\新建文件夹` 里啦!

希望我的解释让你捧腹大笑同时豁然开朗,祝你编程愉快哦!:D
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2024-7-10 10:49:17 | 显示全部楼层
微信图片_20240710104810.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-10 10:49:28 | 显示全部楼层


哈哈,看来你是在干一些有趣的事情呢!不过,我得告诉你,这个数字“187630”对我们目前的问题没有帮助。不过,如果有任何与编程或者文件操作相关的问题,我很乐意帮你解决!

回到刚才的话题,如果你还有关文件路径或者其他Python问题想问的,尽管提出来吧。我会尽量用通俗易懂和幽默的方式解答你的问题~
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-7-10 10:59:47 | 显示全部楼层
FishC 发表于 2024-7-10 10:47
哈哈哈,鱼油呀,你这段代码看起来很有意思,但有几个小问题呢。让我们慢慢来解答为什么文件会创建在 `pyth ...

那为什么默认路径会在D:\\python_t里呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-10 10:59:59 | 显示全部楼层
zhouqq 发表于 2024-07-10 10:59
那为什么默认路径会在D:\\python_t里呢


哈哈,看来你对路径问题真的很感兴趣!让我们一起来揭开“默认路径”的神秘面纱吧。

当你运行Python脚本时,Python会有一个所谓的“当前工作目录”(Current Working Directory,CWD)。这个目录通常是你运行Python解释器或者你的脚本所在的目录。

现在,如果你在代码里使用了相对路径(也就是没有指定完整路径,只给出文件名),Python就会在当前工作目录下找文件或者创建文件。

所以,如果你的脚本是从 `D:\python_t` 目录下运行的,那么 `a = input('请输入文件名:')` 和 `f = open(a, 'w')` 就会在 `D:\python_t` 目录下操作文件。当你输入的只是文件名而不是完整路径时,Python会默认在当前工作目录下创建这个文件。

你可以通过以下代码检查当前工作目录是哪儿:
import os

cwd = os.getcwd()
print(f"当前工作目录是:{cwd}")

这会打印出当前工作目录,让你看到Python是在哪个目录下工作的。

如果你想要改变当前工作目录,可以使用 `os.chdir`:
import os

# 改变当前工作目录
os.chdir('D:\\path_to_your_desired_directory')
print(f"现在的工作目录是:{os.getcwd()}")

这样,默认情况下任何相对路径的文件操作都会在这个新设置的工作目录下进行。

总结一下,你之所以发现文件出现在 `D:\python_t` 目录下,是因为这是你的脚本运行时的当前工作目录。如果你想改变这一行为,可以提供完整路径,或者改变工作目录。

希望这一解释能让你更清楚地理解默认路径和当前工作目录,愉快编程哦!:D
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-10 15:42:03 | 显示全部楼层
你用print只是输出
当你运行Python脚本时,Python会有一个所谓的“当前工作目录”(Current Working Directory,CWD)。这个目录通常是你运行Python解释器或者你的脚本所在的目录。
现在,如果你在代码里使用了相对路径(也就是没有指定完整路径,只给出文件名),Python就会在当前工作目录下找文件或者创建文件。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-7-11 18:02:09 | 显示全部楼层    本楼为最佳答案   

主要问题 上面的 FishC 也说明了

实际上,你这里设置了路径 s,但是错误的使用了格式化,导致 s 成为元组了,而不是格式化到 s 字符串中

你需要将 s 赋值时的字符串后面的 "," 逗号,改成 % 百分号即可正常格式化到 s 字符串中

其次,你 open 传入的参数并不是你的设定的路径:s,而传入了 a 参数,传入同时看到你上传图片中,你输入的文件仅是文件名

那么 open 会当作这是相对路径,就默认将文件创建在了当前工作目录下。

那么当前工作目录为什么是 python_t 文件夹呢?

通常情况下,默认的工作目录就是你当前代码运行时的目录。从图片中能看出你的代码路径是在:D:/python_t/P29-0(保存文本).py

所以默认的工作路径就是在 python_t 文件夹下咯

最后扩展:

什么情况下工作目录不是在当前代码文件夹下呢?

最常见的情况就是使用第三方的 IDE,默认的工作路径一般是 Project 的根目录

还有就是使用 os 模块,手动修改了代码的工作目录



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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-27 12:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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