未被驯化的甲鱼 发表于 2020-5-13 19:39:01

大佬们!为什么我的open文件夹,文件夹创建不出来?

这是我写的小甲鱼第二十九讲的课后第一题,运行没有报错但是文件夹不会在桌面上创建,不知道为什么
于是我写一段新的,就关于创建文件夹的代码(这里不贴出来了,就是把创建文件夹两行代码单独拎出来)运行后桌面上是可以创建文件夹的,可是回到这段代码又不能创建了(我也不知道是文件夹创建了但不在桌面上,还是压根没有创建)
代码如下
name = input('请输入文件名:')
name = ''r'C:\Users\10797\Desktop'+name+'.txt'#把用户起的名字的文件夹变成真的文件夹   /////这里我改成name = name+'.txt‘也不行
content = input('''请输入内容[单独输入':w'保存退出]:''')

for each_line in content:#检测每一行的个子字符串
    if each_line[:2] ==':w':#这说明检测到了终止符,接下来要保存正文关闭文件
      file = open(name,'w')#打开这个文件夹,模式为w
      file.writelines(content)#写入内容
      file.close()
运行后
=============== RESTART: C:/Users/10797/Desktop/5.13接受输入并生成文件.py ==============
请输入文件名:第八次测试
请输入内容[单独输入':w'保存退出]::w
>>>

BngThea 发表于 2020-5-13 19:42:28

路径这样拼接有点问题,最后少了一个反斜杠

Twilight6 发表于 2020-5-13 19:43:00

name =r'C:\Users\10797\Desktop\'+name+'.txt'

这样试试 你别把原始字符‘r’给包到字符串里去

hrp 发表于 2020-5-13 19:51:07

本帖最后由 hrp 于 2020-5-13 19:54 编辑

不知道是不是我理解错了
创建文件夹要用os.mkdir(r'x:\xxx')
不行就是你写的路径不合法

有谁懂 发表于 2020-5-13 19:51:53

本帖最后由 有谁懂 于 2020-5-13 19:52 编辑

name = "r'C:\Users\10797\Desktop\%s.txt' % name"
这样应该就可以了,主要你路径拼接错误。

未被驯化的甲鱼 发表于 2020-5-13 20:02:50

BngThea 发表于 2020-5-13 19:42
路径这样拼接有点问题,最后少了一个反斜杠

加了反斜杠也不行
全改成斜杠也不行
现在改成name = name+'.txt'了,还是不行
但是我单独写一份却是可以用的
name = input('请输入文件名:')
name = name+'.txt'
file = open(name,'w')
file.write('文字内容')
file.close()
这样是成功创建的{:10_266:}我已经搞不懂了

有谁懂 发表于 2020-5-13 20:08:04

未被驯化的甲鱼 发表于 2020-5-13 20:02
加了反斜杠也不行
全改成斜杠也不行
现在改成name = name+'.txt'了,还是不行


你原来的代码确实少了\,导致路径不合法
你新方法直接open的话实在.py的当前目录创建一个txt文件
想要在指定目录创建的话就不可行了
除非你改变当前目录的位置
大概就是这样
我也才学不久
大家一起努力

未被驯化的甲鱼 发表于 2020-5-13 20:21:41

有谁懂 发表于 2020-5-13 20:08
你原来的代码确实少了\,导致路径不合法
你新方法直接open的话实在.py的当前目录创建一个txt文件
想要 ...

name = name+'.txt'
这样写默认是创建在桌面上的(单独拎出来测试过)
而且我找了目录,目录下并没有
电脑全盘搜索也找不到

有谁懂 发表于 2020-5-13 20:34:10

本帖最后由 有谁懂 于 2020-5-13 20:51 编辑

未被驯化的甲鱼 发表于 2020-5-13 20:21
name = name+'.txt'
这样写默认是创建在桌面上的(单独拎出来测试过)
而且我找了目录,目录下并没有


因你执行这个程序的.py文件在桌面,所以生成的文件也在桌面。
要是你把你敲好代码的文件换个目录,在执行,生成的文件就会在你当前目录下。
你可以通过os.getcwd得到当前.py文件所在的目录。
不知道这样解释你明白么。
我说的目录不是python默认的目录,你是执行代码的.py文件在的目录。

未被驯化的甲鱼 发表于 2020-5-13 20:50:18

有谁懂 发表于 2020-5-13 20:34
因你执行这个程序的.py文件在桌面,所以生成的文件也在桌面。
要是你把你敲好代码的文件换个目录,在 ...

可现在问题是压根就没有这个文件啊,电脑全盘搜索也找不到
但是我单独写一份纯创建文件夹的代码(还是用到这句name = name+'.txt')是可以成功创建的
我现在的问题是,运行发帖那段代码不会出现文件夹
而运行单单
name = input('请输入文件名:')
name = name+'.txt'
file = open(name,'w')
file.write('文字内容')
file.close()
文件夹就成功创建在桌面上了,你明白我的意思吗?

有谁懂 发表于 2020-5-13 21:02:52

未被驯化的甲鱼 发表于 2020-5-13 20:50
可现在问题是压根就没有这个文件啊,电脑全盘搜索也找不到
但是我单独写一份纯创建文件夹的代码(还是用 ...

运行发帖那段代码不会出现文件夹,是因为你文件路径有问题,无法创建文件。
如果你单独写一份纯创建文件夹的代码的文件,比如文件名叫test.py(假设在桌面上):
因为你以写入的方式调用了open函数,且函数不包含文件夹路径,
所以python默认open函数使用的路径为test.py所在的目录(桌面),
这样,当这个目录(桌面)没有文件名为name.txt的文件时,就会在当前目录(桌面)创建一个名为name.txt空白文件。
不知道这样解释你明白么
可能我表达得不太清楚,你参考下你发帖的代码和我们给的修改建议看看就明白了。

未被驯化的甲鱼 发表于 2020-5-13 21:12:43

有谁懂 发表于 2020-5-13 21:02
运行发帖那段代码不会出现文件夹,是因为你文件路径有问题,无法创建文件。
如果你单独写一份纯创建文件 ...

name = input('请输入文件名:')
name = name+'.txt'
content = input('''请输入内容[单独输入':w'保存退出]:''')

for each_line in content:#检测每一行的个子字符串
    if each_line[:2] ==':w':#这说明检测到了终止符,接下来要保存正文关闭文件
      file = open(name,'w')#打开这个文件夹,模式为w
      file.writelines(content)#写入内容
      file.close()

改成现在这样,还是不行 没有文件夹生成,桌面没有,python3.8的快捷方式目录没有,python根目录也没有,电脑全盘搜索也没有。
改成你说的name = "r'C:\Users\10797\Desktop\%s.txt' % name" 直接报错运行不了
改成name = ''r'C:\Users\10797\Desktop\'+name+'.txt'文件也找不到
改成name = 'C:\Users\10797\Desktop\'+name+'.txt'文件也不行
改成name = 'C:/Users/10797/Desktop/'+name+'.txt'也不行
改成name = 'C://Users/10797/Desktop/'+name+'.txt'也不行
你明白我想表达什么了吗?我都试过了就是不行,但是单独写一份纯创建文件夹的代码就可以用
一旦套进完整的代码里就又创建不了文件了。我觉得你根本就没有好好看我发的问题

Twilight6 发表于 2020-5-13 21:20:10

未被驯化的甲鱼 发表于 2020-5-13 21:12
name = input('请输入文件名:')
name = name+'.txt'
content = input('''请输入内容[单独输入':w'保存 ...

name =r'C:\Users\10797\Desktop\'+name+'.txt'
试一试这个啊

有谁懂 发表于 2020-5-13 21:36:16

本帖最后由 有谁懂 于 2020-5-13 21:42 编辑

未被驯化的甲鱼 发表于 2020-5-13 21:12
name = input('请输入文件名:')
name = name+'.txt'
content = input('''请输入内容[单独输入':w'保存 ...

因为你each_line里有问题,你把each__line打印出来就知道了,each__line不会出现字符串':w', if条件不会满足,所以怎么都不会创建文件呀。
name = input('请输入文件名:')
name = name+'.txt'
content = str(input('''请输入内容[单独输入':w'保存退出]:'''))

for each_line in content:#检测每一行的个子字符串
    print(each_line)
    if each_line==':w':#这说明检测到了终止符,接下来要保存正文关闭文件
      file = open(name,'w')#打开这个文件夹,模式为w
      file.writelines(content)#写入内容
      file.close()

因为content是一个字符串,当你for each_line in content:
得到的是conten里面单个的字符,不可得字符串‘:w’,
若果改为 if each_line=='w' 应该就可以了。

txxcat 发表于 2020-5-13 21:54:29

模拟一下就知道你的文件在哪里了:
>>> name = '第八次测试'
>>> name = ''r'C:\Users\10797\Desktop'+name+'.txt'
>>> name
'C:\\Users\\10797\\Desktop第八次测试.txt'
因为你的'Desktop'后面没有加上'\',所以'Desktop'和你输入的字符串合并成了新的文件名,你可以在'C:\Users\10797'目录下可以找到'Desktop第八次测试.txt'。
页: [1]
查看完整版本: 大佬们!为什么我的open文件夹,文件夹创建不出来?