鱼C论坛

 找回密码
 立即注册
查看: 2595|回复: 8

求助第30讲第一个问题啊。。

[复制链接]
发表于 2016-1-21 20:09:44 | 显示全部楼层 |阅读模式
5鱼币
统计目录下的文件数目

import os
import os.path

set_path = os.chdir('E:\QQDownload')
get_path = os.getcwd()

list1 = os.listdir(get_path)

path_abs = []
for each in list1:
    path_abs.append(get_path+'\\'+each)

count_folder = 0
file_after = []
file_floder = []

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for each_item in path_abs:
    if each_item == 'E:\\QQDownload\\BT':
        print('get it')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    if os.path.isdir(each_item):
        
        count_folder +=1
        file_floder.append(each_item)
        path_abs.remove(each_item)
    else:
        (part_first,part_second) = os.path.splitext(each_item)
        file_after.append(part_first)
print(path_abs)
print(file_floder)
print(file_after)

在%%%号包围的循环中'E:\\QQDownload\\BT'一直都没有被读到。。。而 这个目录是存在在path_abs 列表里的。。为什么循环读不到呀
YO8Q0[XQ8@SR_RRS_Z~V5}U.png

运行结果这样。。就是BT这个文件夹一直读不到。。。求大神解答呀








最佳答案

查看完整内容

for each_item in path_abs: 改为 for each_item in path_abs.copy(): 你下面有个path_abs.remove(each_item)会改变path_abs for一个会变的会有问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-1-21 20:09:45 | 显示全部楼层
for each_item in path_abs:
改为
for each_item in path_abs.copy():

你下面有个path_abs.remove(each_item)会改变path_abs  for一个会变的会有问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-1-21 21:13:53 | 显示全部楼层
你的意思是for迭代不出你要的结果?
还是我曲解了你的意思?
  1. list1 = ['E:\\QQDownload\\BT', 'E:\\QQDownload\\Browser']

  2. for each in list1:
  3.     if each == 'E:\\QQDownload\\BT':
  4.         print('get it')

  5. C:\Python34\python.exe E:/python/tmp.py
  6. get it
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-1-21 22:09:24 | 显示全部楼层
hldh214 发表于 2016-1-21 21:13
你的意思是for迭代不出你要的结果?
还是我曲解了你的意思?

for 迭代时 我监测了迭代过程中的每一项。。可是'E:\\QQDownload\\BT'这项就是没有参与到迭代过程中。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-1-22 08:26:36 | 显示全部楼层
jip13005 发表于 2016-1-21 22:09
for 迭代时 我监测了迭代过程中的每一项。。可是'E:\\QQDownload\\BT'这项就是没有参与到迭代过程中。。{ ...

不会的,你可以试试在for循环里面print一下each_item 看看问题在哪
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2016-1-22 08:33:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-1-22 09:09:53 | 显示全部楼层
hldh214 发表于 2016-1-22 08:26
不会的,你可以试试在for循环里面print一下each_item 看看问题在哪

for each_item in path_abs:
    if each_item == 'E:\\QQDownload\\BT':
        print('get it')

在%%%%
%%%% 里面已经监测了。。。就是没出现
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-1-22 09:43:47 | 显示全部楼层
jip13005 发表于 2016-1-22 09:09
for each_item in path_abs:
    if each_item == 'E:\\QQDownload\\BT':
        print('get it')

不是, 你在if外面print
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-1-22 17:10:52 | 显示全部楼层
楼上说的是正确的,path_abs.remove(each_item)
for循环中最好不要用remove操作,会给自己造成不必要的麻烦。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-19 09:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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