求助
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
Q1:为什么运行结果中D:后面有两个反斜杠,哪里有问题?
请输入待查找的初始目录:D:\\A
因为你输入的时候是双斜杠
Q2:为什么将初始目录设为D:时没有运行结果?
D: 表示盘符,而不是路径,你应该输入 D:\ 才算是 D盘根目录
Twilight6 发表于 2020-8-25 17:49
请输入待查找的初始目录:D:\\A
因为你输入的时候是双斜杠
输入双斜杠不是为了转义吗?
而且小甲鱼的作业里给的示例也是双斜杠 1、print(catelogue+'\\'+target_file)
这里的加号相当于字符串连接,不存在转义的情况,所以+“\\”就会打印出\\
2、这个说不太清,你可以理解为:输入内容作为os.listdir(catelogue)函数参数的固定要求
本帖最后由 Twilight6 于 2020-8-25 17:53 编辑
关于问题二,建议不要输入整个盘,有些保护文件你打不开也会导致你报错的,而且你 D 盘内文件如果有点多,那代码执行的时间也比较耗时
Tom学编程 发表于 2020-8-25 17:52
输入双斜杠不是为了转义吗?
你 input 输入的时候不需要你进行转义 https://fishc.com.cn/thread-45649-1-2.html
这节课的作业 Twilight6 发表于 2020-8-25 17:53
你 input 输入的时候不需要你进行转义
但是打印时需要啊 >>> print('D:\\A')
D:\A
如果直接打印这个字符串出来就是单斜杠 Tom学编程 发表于 2020-8-25 17:57
但是打印时需要啊
字符串连接的时候也不用转义啊 Tom学编程 发表于 2020-8-25 17:57
但是打印时需要啊
打印不正常打印吗,input 函数自动转义了
你执行这个代码就知道了:
user = input('>>>')
print()
输出结果:
>>>\
['\\']
昨非 发表于 2020-8-25 18:00
字符串连接的时候也不用转义啊
字符串拼接时候是需要的 Twilight6 发表于 2020-8-25 18:01
字符串拼接时候是需要的
在引号内部的时候不是直接作为整体的吗 Twilight6 发表于 2020-8-25 18:01
字符串拼接时候是需要的
刚刚测试了,这一点之前没有注意过,多谢了 昨非 发表于 2020-8-25 18:02
在引号内部的时候不是直接作为整体的吗
'D:'+'\' # 会报错
'D:'+'\\' # 不会报错,拼接需要转义
Tom学编程 发表于 2020-8-25 17:59
如果直接打印这个字符串出来就是单斜杠
print 打印字符串时候没有打印出转义字符啊,所以你看上去只有一个 \ ,你弄成列表就能看见转义字符了
>>> print(['D:\\A'])
['D:\\A'] Twilight6 发表于 2020-8-25 18:00
打印不正常打印吗,input 函数自动转义了
你执行这个代码就知道了:
明白了,十分感谢!!
页:
[1]