鱼C论坛

 找回密码
 立即注册
查看: 1813|回复: 28

[已解决]python 第30讲第3题

[复制链接]
发表于 2018-7-25 18:50:29 | 显示全部楼层 |阅读模式
4鱼币

我的: F5(ZADCD00)1PMR@V94`HU5.png
问题一:小甲鱼的vedio_list应该是个全局变量,为什么在定义的函数里往这个列表里添加元素却没有用global声明?
问题二:我的程序没有报错,但是为什么建立的是一个空列表?请问是哪里出了问题
最佳答案
2018-7-25 18:50:30
王德发 发表于 2018-7-25 21:22
有,用小甲鱼的程序就能完美运行

那是不是文件夹套文件夹?我貌似发现了问题。
def search_vedio(search_path):
    import os
    vedio_path = ''
    os.chdir(search_path)
    all_files=os.listdir(os.curdir)
    for each in all_files:
        if os.path.isfile(each):
            if os.path.splitext(each)[1] in extend:
                vedio_path=os.getcwd()+os.sep+each
                global vidio
                vedio.append(vedio_path)
        if os.path.isdir(each):
            search_vedio(each)
            os.pardir

应不应该是chdir?

最佳答案

查看完整内容

那是不是文件夹套文件夹?我貌似发现了问题。 应不应该是chdir?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-25 18:50:30 | 显示全部楼层    本楼为最佳答案   
王德发 发表于 2018-7-25 21:22
有,用小甲鱼的程序就能完美运行

那是不是文件夹套文件夹?我貌似发现了问题。
def search_vedio(search_path):
    import os
    vedio_path = ''
    os.chdir(search_path)
    all_files=os.listdir(os.curdir)
    for each in all_files:
        if os.path.isfile(each):
            if os.path.splitext(each)[1] in extend:
                vedio_path=os.getcwd()+os.sep+each
                global vidio
                vedio.append(vedio_path)
        if os.path.isdir(each):
            search_vedio(each)
            os.pardir

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

使用道具 举报

 楼主| 发表于 2018-7-25 18:54:37 | 显示全部楼层
f:\桌面文件路径\图片\TIM图片20180725184025
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-7-25 18:58:57 | 显示全部楼层
抱歉,上传了小甲鱼的原图但可能是尺寸太大了没有显示,然后评论区里我不会上传了....带来不便深感抱歉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-7-25 19:00:54 | 显示全部楼层
TIM图片20180725184025.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-25 19:30:47 | 显示全部楼层
本帖最后由 无符号整形 于 2018-7-25 21:12 编辑

1.只要是在全局作用域(就是前面1个tab也没有的那些代码)定义的变量就是全局变量。global关键字的作用是为了在其它作用域中定义全局变量。
2.因为你自己在函数中定义了全局变量vidio,然后在后面清空了。(后:误,我看错了)

评分

参与人数 1荣誉 +3 贡献 +2 收起 理由
王德发 + 3 + 2

查看全部评分

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

使用道具 举报

发表于 2018-7-25 19:47:38 | 显示全部楼层
先说小甲鱼的,list作为可变变量,全局变量是可以在函数中局部修改的,如append,sort等,但不能重新赋值如vedio_list = [3]
你的程序给出代码,我运行一下试试。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-7-25 20:35:52 | 显示全部楼层
冬雪雪冬 发表于 2018-7-25 19:47
先说小甲鱼的,list作为可变变量,全局变量是可以在函数中局部修改的,如append,sort等,但不能重新赋值如 ...

def search_vedio(search_path):
    import os
   
    os.chdir(search_path)
    all_files=os.listdir(os.curdir)
    for each in all_files:
        if os.path.isfile(each):
            if os.path.splitext(each)[1] in extend:
                vedio_path=os.getcwd()+os.sep+each
            
                vedio.append(vidio_path)
        if os.path.isdir(each):
            search_vedio(each)
            os.pardir


search_path=input('请输入开始搜索的路径:')
extend=['.avi','.mp4','.rmvb','.3gp','.mov']
vedio=[]
search_vedio(search_path)
f=open('c:/Python33/python教学练习/030/视频路径','w')
f.writelines(vedio)
f.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-7-25 20:39:22 | 显示全部楼层
无符号整形 发表于 2018-7-25 19:30
1.只要是在全局作用域(就是前面1个tab也没有的那些代码)定义的变量就是全局变量。global关键字的作用是为 ...

不应该啊,我定义的全局变量vedio先于引用函数search_vedio,应该不会清空引用函数之后的列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-25 20:49:32 | 显示全部楼层
王德发 发表于 2018-7-25 20:39
不应该啊,我定义的全局变量vedio先于引用函数search_vedio,应该不会清空引用函数之后的列表

哦哦,我看错了,抱歉。。。
我重新看了下代码,好像没问题,而且在我这里好像程序一切正常啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-7-25 20:55:33 | 显示全部楼层
无符号整形 发表于 2018-7-25 20:49
哦哦,我看错了,抱歉。。。
我重新看了下代码,好像没问题,而且在我这里好像程序一切正常啊?

然而我这边写入的就是一个空文档...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-25 20:56:16 | 显示全部楼层
王德发 发表于 2018-7-25 20:55
然而我这边写入的就是一个空文档...

看来你写文件那里可能有问题。
我这里print一切正常。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-25 20:57:21 | 显示全部楼层
王德发 发表于 2018-7-25 20:55
然而我这边写入的就是一个空文档...

我看应该是分隔符错了吧?
改成
open('c:\\Python33\\python教学练习\\030\\视频路径.txt','w')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-7-25 20:57:23 | 显示全部楼层
无符号整形 发表于 2018-7-25 20:56
看来你写文件那里可能有问题。
我这里print一切正常。

我再琢磨琢磨吧。谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-7-25 20:59:30 | 显示全部楼层
无符号整形 发表于 2018-7-25 20:57
我看应该是分隔符错了吧?
改成
open('c:\\Python33\\python教学练习\\030\\视频路径.txt','w')

如果是分隔符错误的话应该连空文档也建立不了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-25 21:00:33 | 显示全部楼层
王德发 发表于 2018-7-25 20:59
如果是分隔符错误的话应该连空文档也建立不了

对呀,我这里就是这样。
  1. Traceback (most recent call last):
  2.   File "C:/Users/Oden/AppData/Local/Programs/Python/Python36-32/NlISt.py", line 22, in <module>
  3.     f=open('C:/Users/Oden/AppData/Local/Programs/Python/Python36-32','w')
  4. PermissionError: [Errno 13] Permission denied: 'C:/Users/Oden/AppData/Local/Programs/Python/Python36-32'
复制代码

莫非你的Os是linux?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-7-25 21:02:41 | 显示全部楼层
无符号整形 发表于 2018-7-25 21:00
对呀,我这里就是这样。

莫非你的Os是linux?

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

使用道具 举报

发表于 2018-7-25 21:04:46 | 显示全部楼层

额,抱歉,是我弄错了,我忘了加文件名,我这里一切正常?
testestt.JPG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-25 21:09:46 | 显示全部楼层
你print试试,看看能不能打印出来。
另外你的文档没有后缀名,加上.txt吧,好打开一点~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-7-25 21:15:24 | 显示全部楼层
无符号整形 发表于 2018-7-25 21:09
你print试试,看看能不能打印出来。
另外你的文档没有后缀名,加上.txt吧,好打开一点~

print打印无效。。可能我电脑有毒吧,我换pycharm试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 17:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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