python修改文件后缀名

不要小看这段代码哦。我还从中收获不少呢。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import os
import string
dirName = "./code/demo/"
li = os.listdir(dirName)
for filename in li:
     newname = filename
     newname = newname.split( "." )
     if newname[ - 1 ] = = "txt" :
         newname[ - 1 ] = "html"
         newname = string.join(newname, "." )
         filename = dirName + filename
         newname = dirName + newname
         os.rename(filename,newname)
         print newname, "updated successfully"

如果你这样写:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import os
import string
dirName = "./code/demo/"
li = os.listdir(dirName)
for filename in li:
     #newname = filename
     newname = newname.split( "." )
     newname = filename      #在这后面修改newname也直接修改了filename
     if newname[ - 1 ] = = "txt" :
         newname[ - 1 ] = "html"
         newname = string.join(newname, "." )
         filename = dirName + filename
         newname = dirName + newname
         os.rename(filename,newname)
         print newname, "updated successfully"

因为python里面对传值和引用传值有非常诡异的“搞法”

如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值——相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象——相当于通过“传值'来传递对象。

1
2
3
4
5
6
files = os.listdir( "." )
    for filename in files:
        li = os.path.splitext(filename)
        if li[ 1 ] = = ".html" :
            newname = li[ 0 ] + ".htm"
            os.rename(filename,newname)
原来系统有自带的os.path.splitext( )来获取后缀名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值