鱼C论坛

 找回密码
 立即注册
查看: 2322|回复: 6

[已解决]关于文件的问题

[复制链接]
发表于 2016-3-10 21:52:28 | 显示全部楼层 |阅读模式
5鱼币
  1. import os
  2. file_name = str(input('请输入待查找的目录:'))
  3. file_target = str(input('请输入需要查找的目标文件'))


  4. def check(file_name,file_target):
  5.     tempt = os.listdir(file_name)
  6.     for each in tempt:
  7.       #当遇到文件时,匹配
  8.         eachpath = file_name + '/' + each
  9.         if os.path.isfile(eachpath):
  10.             if file_target == each:
  11.                 print(file_name + '/' + file_target)
  12.     #当遇到文件夹时,进入文件夹
  13.         if os.path.isdir(eachpath):
  14.             {#file_name = eachpath
  15.             #check(file_name,file_target)}
  16.             check(eachpath,file_target)


  17. check(file_name,file_target)
复制代码

为什么最后第二行改为大括号中的输出结果会不一样
最佳答案
2016-3-10 21:52:29
你花括号中括起来部分修改了file_name,导致在下一次for循环的时候,file_name不是最开始输入的那个了。
如果你将花括号中的file_name使用别的变量名代替,比如file_name1,就可以打印出正确的结果了。

最佳答案

查看完整内容

你花括号中括起来部分修改了file_name,导致在下一次for循环的时候,file_name不是最开始输入的那个了。 如果你将花括号中的file_name使用别的变量名代替,比如file_name1,就可以打印出正确的结果了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-10 21:52:29 | 显示全部楼层    本楼为最佳答案   
你花括号中括起来部分修改了file_name,导致在下一次for循环的时候,file_name不是最开始输入的那个了。
如果你将花括号中的file_name使用别的变量名代替,比如file_name1,就可以打印出正确的结果了。

评分

参与人数 1荣誉 +3 鱼币 +5 收起 理由
~风介~ + 3 + 5

查看全部评分

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

使用道具 举报

 楼主| 发表于 2016-3-11 14:58:38 | 显示全部楼层
安以陌 发表于 2016-3-11 10:15
你花括号中括起来部分修改了file_name,导致在下一次for循环的时候,file_name不是最开始输入的那个了。
...

好的,谢谢
但递归迭代不就是需要file_name不一样吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-11 15:01:06 | 显示全部楼层
<a >楼上说的不错</a>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-3-12 11:18:44 | 显示全部楼层
沉默中学习 发表于 2016-3-11 14:58
好的,谢谢
但递归迭代不就是需要file_name不一样吗?

我说的file_name1就是你所谓的改变了file_name,程序每次for循环都会给它重新赋值,此处file_name1实际上就是一个中间变量,而file_name类似于for循环中的全局变量,因为每次for循环都会用到file_name的值,所以不能修改file_name的值,相当于这是一个共享的变量,只可读不可写。
我是这么理解的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-3-12 19:34:30 | 显示全部楼层
安以陌 发表于 2016-3-12 11:18
我说的file_name1就是你所谓的改变了file_name,程序每次for循环都会给它重新赋值,此处file_name1实际 ...

好吧,谢谢,我再消化消化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-8-7 17:20:33 | 显示全部楼层
将子目录赋值给path,子目录循环完之后,出不来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 22:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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