注册 登录
编程论坛 Python论坛

为什么我这个脚本不能对指定目录执行呢?

打球的渔夫 发布于 2017-04-18 17:04, 2275 次点击
# encoding: utf-8
import zipfile
import os
def rename():
    path ="E:\\python123\\PY1\\src\\gaihouzhui\\123"
    filelist = os.listdir(".")      
    for filename in filelist:
        portion = os.path.splitext(filename)
        if portion[1] == ".jpg":   
            newname = portion[0] + ".zip"
            os.rename(filename,newname)
rename();
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录


这个只能对程序目录下的文件运行结果,对绝对目录没有用,这是啥情况?
小白一个,请各位大神帮帮忙解释一下。谢谢!
5 回复
#2
寒风中的细雨2017-04-18 22:29
应该是设定的参数没有传递进去


    filelist = os.listdir(path)


改成这样子 试下
#3
打球的渔夫2017-04-19 09:37
回复 2楼 寒风中的细雨
之前就是这样子改的,也不行。。。忧桑。。
#4
寒风中的细雨2017-04-19 21:16
回复 3楼 打球的渔夫
改了之后  将filelist 全部打印出来看看 是什么  不就清楚了

昨天 试过 是可以读取到 path指定目录下面的文件的
#5
sunb32017-04-24 10:22
回复 楼主 打球的渔夫
PATH没有用导致的。因为你没用全名,全名是路径+文件名,否则就是相对路径,当然找不到目标。更何况你最开始os.listdir里面根本没给正确的地址……
我个人……建议你先踏实看一下Python的官方文档……不是装笔……里面有特别详细的介绍,看懂了你就不会不清楚为啥listdir给了名字却没有办法直接用在rename里了……

代码仅供参考:

程序代码:
import os

#所有扩展名都压在里面
EXTENTIONS = [".jpg",".jpeg"]

#只获取扩展名
def get_ext_name(filename):
    return os.path.splitext(filename)[1]

#只获取全名
def get_full_name(path, filename):
    if(path.endswith("\\")):
       return path+os.path.splitext(filename)[0]
    else:
       return path+"\\"+filename

#改名
def filename_mod(path):
       filelst = os.listdir(path)
       for filename in filelst:
           if get_ext_name(filename) in EXTENTIONS:
               fullname = get_full_name(path,filename)
               os.rename(fullname,fullname+".zip")


另外,看来看去发现几个问题:
1、标识太单一,扩展麻烦
2、所有代码一股脑都写在了一起不好发现和单独处理问题
3、前后只是改了扩展名,没必要引用多余的模块

[此贴子已经被作者于2017-4-24 10:26编辑过]

#6
打球的渔夫2017-04-29 11:28
回复 5楼 sunb3
好的,谢谢 谢谢!! 谨记师哥的教诲!
1