鱼C论坛

 找回密码
 立即注册
查看: 1633|回复: 18

[已解决]求助

[复制链接]
发表于 2020-8-25 17:46:19 | 显示全部楼层 |阅读模式

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

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

x
Q1:为什么运行结果中D:后面有两个反斜杠,哪里有问题?
Q2:为什么将初始目录设为D:时没有运行结果?



代码:
import os
catelogue = input('请输入待查找的初始目录:')
target_file = input('请输入需要查找的目标文件:')
def research(catelogue,target_file):
    catelogue1 = os.listdir(catelogue)
    for each in catelogue1:
        if each == target_file:
            print(catelogue+'\\'+target_file)
        else:
            folder = catelogue+'\\'+each
            if os.path.isdir(folder):
                research(folder,target_file)

research(catelogue,target_file)

运行结果:
请输入待查找的初始目录:D:\\A
请输入需要查找的目标文件:test.txt
D:\\A\B\test.txt
D:\\A\test.txt
最佳答案
2020-8-25 18:00:45



打印不正常打印吗,input 函数自动转义了

你执行这个代码就知道了:
user = input('>>>')
print([user])

输出结果:
>>>\
['\\']

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

使用道具 举报

发表于 2020-8-25 17:49:54 | 显示全部楼层

Q1:为什么运行结果中D:后面有两个反斜杠,哪里有问题?


请输入待查找的初始目录:D:\\A

因为你输入的时候是双斜杠


Q2:为什么将初始目录设为D:时没有运行结果?


D: 表示盘符,而不是路径,你应该输入 D:\ 才算是 D盘根目录
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-25 17:52:30 | 显示全部楼层
Twilight6 发表于 2020-8-25 17:49
请输入待查找的初始目录:D:\\A

因为你输入的时候是双斜杠


输入双斜杠不是为了转义吗?
而且小甲鱼的作业里给的示例也是双斜杠
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-25 17:52:53 | 显示全部楼层
1、
  print(catelogue+'\\'+target_file)
这里的加号相当于字符串连接,不存在转义的情况,所以+“\\”就会打印出\\
2、这个说不太清,你可以理解为:输入内容作为os.listdir(catelogue)函数参数的固定要求
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-25 17:52:53 | 显示全部楼层
本帖最后由 Twilight6 于 2020-8-25 17:53 编辑



关于问题二,建议不要输入整个盘,有些保护文件你打不开也会导致你报错的,而且你 D 盘内文件如果有点多,那代码执行的时间也比较耗时

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

使用道具 举报

发表于 2020-8-25 17:53:41 | 显示全部楼层
Tom学编程 发表于 2020-8-25 17:52
输入双斜杠不是为了转义吗?

你 input 输入的时候不需要你进行转义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-25 17:56:23 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-25 17:57:40 | 显示全部楼层
Twilight6 发表于 2020-8-25 17:53
你 input 输入的时候不需要你进行转义

但是打印时需要啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-25 17:59:55 | 显示全部楼层
>>> print('D:\\A')
D:\A

如果直接打印这个字符串出来就是单斜杠
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-25 18:00:42 | 显示全部楼层

字符串连接的时候也不用转义啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-25 18:00:45 | 显示全部楼层    本楼为最佳答案   



打印不正常打印吗,input 函数自动转义了

你执行这个代码就知道了:
user = input('>>>')
print([user])

输出结果:
>>>\
['\\']

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

使用道具 举报

发表于 2020-8-25 18:01:12 | 显示全部楼层
昨非 发表于 2020-8-25 18:00
字符串连接的时候也不用转义啊

字符串拼接时候是需要的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-25 18:02:48 | 显示全部楼层
Twilight6 发表于 2020-8-25 18:01
字符串拼接时候是需要的

在引号内部的时候不是直接作为整体的吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-25 18:04:18 | 显示全部楼层
Twilight6 发表于 2020-8-25 18:01
字符串拼接时候是需要的

刚刚测试了,这一点之前没有注意过,多谢了

点评

没事~  发表于 2020-8-25 18:05
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-25 18:05:08 | 显示全部楼层
昨非 发表于 2020-8-25 18:02
在引号内部的时候不是直接作为整体的吗

'D:'+'\'      # 会报错
'D:'+'\\'     # 不会报错,拼接需要转义

评分

参与人数 1鱼币 +1 收起 理由
昨非 + 1 了解了,谢解惑(最近经常被大佬纠正,改了.

查看全部评分

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

使用道具 举报

发表于 2020-8-25 18:06:29 | 显示全部楼层
Tom学编程 发表于 2020-8-25 17:59
如果直接打印这个字符串出来就是单斜杠


print 打印字符串时候没有打印出转义字符啊,所以你看上去只有一个 \ ,你弄成列表就能看见转义字符了
>>> print(['D:\\A'])
['D:\\A']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-25 18:08:52 | 显示全部楼层
Twilight6 发表于 2020-8-25 18:00
打印不正常打印吗,input 函数自动转义了

你执行这个代码就知道了:

明白了,十分感谢!!

点评

客气了~  发表于 2020-8-25 18:11
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 03:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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