鱼C论坛

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

[已解决]求助

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

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

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

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



代码:
  1. import os
  2. catelogue = input('请输入待查找的初始目录:')
  3. target_file = input('请输入需要查找的目标文件:')
  4. def research(catelogue,target_file):
  5.     catelogue1 = os.listdir(catelogue)
  6.     for each in catelogue1:
  7.         if each == target_file:
  8.             print(catelogue+'\\'+target_file)
  9.         else:
  10.             folder = catelogue+'\\'+each
  11.             if os.path.isdir(folder):
  12.                 research(folder,target_file)

  13. research(catelogue,target_file)
复制代码


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



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

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

  1. user = input('>>>')
  2. print([user])
复制代码


输出结果:
  1. >>>\
  2. ['\\']
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

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


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

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


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


D: 表示盘符,而不是路径,你应该输入 D:\ 才算是 D盘根目录
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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


输入双斜杠不是为了转义吗?
而且小甲鱼的作业里给的示例也是双斜杠
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-25 17:52:53 | 显示全部楼层
1、
  1.   print(catelogue+'\\'+target_file)
复制代码

这里的加号相当于字符串连接,不存在转义的情况,所以+“\\”就会打印出\\
2、这个说不太清,你可以理解为:输入内容作为os.listdir(catelogue)函数参数的固定要求
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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



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

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

你 input 输入的时候不需要你进行转义
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-25 17:56:23 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

但是打印时需要啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-25 17:59:55 | 显示全部楼层
  1. >>> print('D:\\A')
  2. D:\A
复制代码


如果直接打印这个字符串出来就是单斜杠
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

字符串连接的时候也不用转义啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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



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

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

  1. user = input('>>>')
  2. print([user])
复制代码


输出结果:
  1. >>>\
  2. ['\\']
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

字符串拼接时候是需要的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

在引号内部的时候不是直接作为整体的吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

点评

没事~  发表于 2020-8-25 18:05
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


  1. 'D:'+'\'      # 会报错
复制代码

  1. 'D:'+'\\'     # 不会报错,拼接需要转义
复制代码


评分

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

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


print 打印字符串时候没有打印出转义字符啊,所以你看上去只有一个 \ ,你弄成列表就能看见转义字符了

  1. >>> print(['D:\\A'])
  2. ['D:\\A']
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

明白了,十分感谢!!

点评

客气了~  发表于 2020-8-25 18:11
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-26 03:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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