批量转换文件扩展名大小写的python脚本

软件和网站开发以及相关技术探讨
rikhtdss
帖子: 115
注册时间: 2006-09-08 18:57
送出感谢: 0
接收感谢: 2 次
联系:

批量转换文件扩展名大小写的python脚本

#1

帖子 rikhtdss » 2010-12-27 15:23

代码: 全选

#!/usr/bin/env python
#-*-coding:utf8 -*-
#filename: extswap.py

import os
from sys import argv
from glob import glob

if len(argv) < 2 or len(argv) >3 or not argv[1].startswith('-'):
    print '''输入错误!正确的语法为:

    extswap.py -option [path]

    -option     指定扩展名
    path        指定要修改的目录(可选,默认为当前目录)

    本程序可以将指定目录下的指定文件类型的扩展名进行大小写转换
    原因是某些网站只允许上传扩展名为小写的jpg、gif等文件。'''

else:
    ext_name = argv[1][1:]
    if len(argv) == 2:
        filepath = os.getcwd()
    else:
        if argv[-1].startswith('/'):  #判断是相对路径还是绝对路径
            filepath = argv[-1]
        else:
            filepath = os.getcwd() + os.sep + argv[-1]
   
    if filepath[-1] != os.sep:
        filepath += os.sep
    def fun(path):
        for fn in glob(path + '*'):
            if os.path.isdir(fn):
                fun(fn + os.sep)  #如果检测到子目录则递归执行
            else:
                if fn[-len(ext_name):] != ext_name:   #忽略不是指定扩展名的文件
                 continue
                realpath = os.path.dirname(os.path.abspath(fn))  #探测文件路径
                newfilename = os.path.basename(fn)[0:-len(ext_name)] +\
                ext_name.swapcase()   #组装新文件名,一定有更简单的办法,不过我现在还不知道:-(
                newfn = realpath + os.sep + newfilename
                os.rename(fn,newfn)
                print fn,'改名为:\n',newfn
    fun(filepath)
因为在某些网站上传图片时,打开文件对话框只显示扩展名为小写的文件,而我的数码相机生成的图片扩展名为大写的JPG,会导至找不到文件。当文件很多时,每一个都手工更改会很累。

正好这两天在鼓捣Python,于是就想用Python写个脚本实现自动改名。《简明》差不多快看完了,觉得还有很多必需的东西不明白,特别是标准库的说明,都是E文。大量Google以后终于弄出了这个能工作的脚本。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 批量转换文件扩展名大小写的python脚本

#2

帖子 eexpress » 2010-12-27 15:40

● less /usr/bin/rename
● 鸣学
头像
leeaman
帖子: 30702
注册时间: 2007-02-02 18:14
系统: debian sid
送出感谢: 1 次
接收感谢: 23 次

Re: 批量转换文件扩展名大小写的python脚本

#3

帖子 leeaman » 2010-12-27 15:44

难得,我以为ee来推销perl进来反对的 :em04
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

Re: 批量转换文件扩展名大小写的python脚本

#4

帖子 eexpress » 2010-12-27 16:40

我是帮助别人学习的。提供思路。
:em04
看过这rename再说。再说。
● 鸣学
rikhtdss
帖子: 115
注册时间: 2006-09-08 18:57
送出感谢: 0
接收感谢: 2 次
联系:

Re: 批量转换文件扩展名大小写的python脚本

#5

帖子 rikhtdss » 2010-12-27 16:47

我重新发明了轮子?
可惜我看不懂perl代码。。。
头像
ly50247
帖子: 89
注册时间: 2008-07-29 8:01
送出感谢: 0
接收感谢: 0

Re: 批量转换文件扩展名大小写的python脚本

#6

帖子 ly50247 » 2010-12-27 18:15

find -name "*.JPG"|xargs rename JPG jpg
头像
lilydjwg
论坛版主
帖子: 4165
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

Re: 批量转换文件扩展名大小写的python脚本

#7

帖子 lilydjwg » 2010-12-28 16:40

man rename 写了: To translate uppercase names to lower, you'd use

rename 'y/A-Z/a-z/' *
这些用户感谢了作者 lilydjwg 于这个帖子:
tang.zhe (2012-06-05 12:37)
评价: 3.7%
头像
ChenFengyuan
帖子: 770
注册时间: 2008-03-23 0:39
送出感谢: 0
接收感谢: 4 次

Re: 批量转换文件扩展名大小写的python脚本

#8

帖子 ChenFengyuan » 2011-01-13 20:28

eexpress 写了:我是帮助别人学习的。提供思路。
:em04
看过这rename再说。再说。
其他脚本对于perl-rename来说都是浮云,lol
可以比较下 :em11
头像
HuntXu
论坛版主
帖子: 5778
注册时间: 2007-09-29 3:09
送出感谢: 0
接收感谢: 6 次

Re: 批量转换文件扩展名大小写的python脚本

#9

帖子 HuntXu » 2011-01-13 20:48

rikhtdss 写了:我重新发明了轮子?
可惜我看不懂perl代码。。。
不,轮子起码是圆的...
HUNT Unfortunately No Talent...
头像
ooinzaghi
帖子: 1763
注册时间: 2010-11-18 15:55
系统: ubuntu16.04+win10
来自: Auir
送出感谢: 8 次
接收感谢: 7 次

Re: 批量转换文件扩展名大小写的python脚本

#10

帖子 ooinzaghi » 2011-05-27 20:15

楼主这个脚本很实用,要是支持直接一键把所有大写改成小写就好了。windows不区分大小写的毛病把我害惨了 :em20 :em20
势不可去尽,话不可说尽,凡事太尽,缘分势必早尽。

生命不息,折腾不止!在折腾中进步!

dropbox邀请链接: https://db.tt/OMGJP72tMW
头像
lilydjwg
论坛版主
帖子: 4165
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

Re: 批量转换文件扩展名大小写的python脚本

#11

帖子 lilydjwg » 2011-05-27 20:51

ooinzaghi 写了:楼主这个脚本很实用,要是支持直接一键把所有大写改成小写就好了。windows不区分大小写的毛病把我害惨了 :em20 :em20
Nautilus 用户的话可以使用用户脚本的,选中后右键里点两下就可以了。
[bash]
#!/bin/bash

for i in $@
do
rename 'y/A-Z/a-z/' "$i"
done
[/bash]
头像
ooinzaghi
帖子: 1763
注册时间: 2010-11-18 15:55
系统: ubuntu16.04+win10
来自: Auir
送出感谢: 8 次
接收感谢: 7 次

Re: 批量转换文件扩展名大小写的python脚本

#12

帖子 ooinzaghi » 2011-05-27 23:43

选中后右键里点两下就可以了
求详解 :em06
势不可去尽,话不可说尽,凡事太尽,缘分势必早尽。

生命不息,折腾不止!在折腾中进步!

dropbox邀请链接: https://db.tt/OMGJP72tMW
头像
lilydjwg
论坛版主
帖子: 4165
注册时间: 2009-04-11 23:46
系统: Arch Linux
送出感谢: 11 次
接收感谢: 127 次
联系:

Re: 批量转换文件扩展名大小写的python脚本

#13

帖子 lilydjwg » 2011-05-28 13:14

ooinzaghi 写了:
选中后右键里点两下就可以了
求详解 :em06
nautilus.png
头像
ooinzaghi
帖子: 1763
注册时间: 2010-11-18 15:55
系统: ubuntu16.04+win10
来自: Auir
送出感谢: 8 次
接收感谢: 7 次

Re: 批量转换文件扩展名大小写的python脚本

#14

帖子 ooinzaghi » 2011-05-28 19:28

感谢楼上,已经成功了 :em11
势不可去尽,话不可说尽,凡事太尽,缘分势必早尽。

生命不息,折腾不止!在折腾中进步!

dropbox邀请链接: https://db.tt/OMGJP72tMW
头像
tang.zhe
帖子: 1425
注册时间: 2010-07-15 13:31
送出感谢: 71 次
接收感谢: 22 次

Re: 批量转换文件扩展名大小写的python脚本

#15

帖子 tang.zhe » 2012-06-04 22:33

感谢7楼!
回复

回到 “软件/网站开发”