文件目錄常用函數
>>> import os
>>> print 'current dir is ', os.getcwd() #獲得當前目錄
current dir is C:\Python25
>>> os.listdir(os.getcwd()) #獲得當前目錄下的文件
['python-2.5.msi', 'Sys32_BackUp', 'w9xpopen.exe', 'README.txt', 'NEWS.txt', 'LICENSE.txt', 'python.exe', 'pythonw.exe', 'Lib', 'DLLs', 'include', 'libs', 'tcl', 'Tools', 'Doc', 'msvcr71.dll', 'python.exe.manifest', 'pythonw.exe.manifest', 'Scripts', 'py2exe-wininst.log', 'Removepy2exe.exe']
>>> os.mkdir('J:\\temp') #創建文件夾
>>> os.rmdir('J:\\temp') #刪除文件夾
>>> os.path.isdir('J:\\vc') #判斷是否為文件夾
True
>>> os.path.isfile('J:\\vc') #判斷是否為文件
False
>>>
10.2.2 批量重命名
#!/usr/bin/env python
#coding=utf-8
import os
perfix = 'python'
length = 2
base = 1
format = 'mdb'
# 函數PadLeft將文件名補全到指定長度
# Str為要補全的字符
# num為要達到的長度
# padstr為達到長度說添加的字符
def PadLeft(str, num, padstr):
stringlength = len(str)
n = num - stringlength
if n >= 0:
str = padstr*n + str
return str
# 為避免誤操作,先提示用戶
print 'The file in %s will be renamed' % os.getcmd()
input = raw_input('press y to continue\n')
if input != 'y':
exit()
filenames = os.listdir(os.curdir)
# 從基數減-1, 為了使下邊i=i+1在第一次執行時等于基數
i = base - 1
for filename in filenames:
i = i+1
# 判斷當前路勁是否為文件,并且不是"rename.py"
if filename != 'rename.py' and os.path.isfile(filename):
name = str(i)
name = PadLeft(name, length, '0')
t = filename.split('.')
m = len(t)
if format == '':
os.rename(filename, prefix+name+'.'+t[m-1])
else:
if t[m-1] == format:
os.rename(filename, prefix+name+'.'+t[m-1])
else:
i = i - 1 #保證i連接
else:
i = i - 1 #保證i連接
10.2.3 代碼框生成器
#!/usr/bin/env python
#coding=utf-8
#file: MakeCode.py
import os
import sys
import string
import datetime
# python 腳本模版
py = '''#------------------------------------------------------------
# TO:
#------------------------------------------------------------
# BY:
#------------------------------------------------------------
'''
# C模版
c = '''*------------------------------------------------------------
* TO:
*------------------------------------------------------------
* BY:
*------------------------------------------------------------
'''
if os.path.isfile(sys.argv[1]):
print '%s already exist!' % sys.argv[1]
sys.exit()
file = open(sys.argv[1], 'w')
today = datetime.date.today()
date = today.strftime('%Y')+'-'+today.strftime('%m')+'-'+today.strftime('%d')
filetypes = string.split(sys.argv[1], '.')
length = len(filetypes)
filetype = filetypes[length - 1]
if filetype == 'py':
print 'use python mode'
file.writelines('# -*- coding:utf-8 -*-')
file.write('\n')
file.writelines('# File: ' + sys.argv[1])
file.write('\n')
file.write(py)
file.write('# Date: ' + date)
file.write('\n')
file.write('#------------------------------------------------------------')
elif filetype == 'c' or filetype == 'cpp':
print 'use c mode'
file.writelines('/*')
file.write('\n')
file.writelines('*------------------------------------------------------------')
file.write('\n')
file.writelines(' * File: ' + sys.argv[1])
file.write('\n')
file.write(c)
file.write(' * Date: ' + date)
file.write('\n')
file.write('*------------------------------------------------------------')
file.write('\n')
file.write(' */ \n')
else:
print 'just create %s' % sys.argv[1]
file.close()
10.2.4 遍歷文件夾中的內容:
>>> import os
>>> for file in os.walk('E:\\TEST'):
... print file
...
('E:\\TEST', ['Folder'], ['AMK0824-PSG_GeminiScripts.xls', 'AMK0824.xls', 'CVS_110906-----PSG_GeminiScripts.xls', 'merlin--9CV--S-2009-140-CTUA--00.00.00------CVS_110906-PSG_GeminiScripts.xls', 'merlin--9CV--S-2009-140-CTUA--00.00.00------CVS_110906.xls'])
('E:\\TEST\\Folder', [], ['1.txt', '2.txt'])
#返回值為一個三元元組,第一個為待遍歷的路徑,類型為字符串;第二個為該路徑中的文件夾,類型為list;第三個為該路徑中的文件,類型為list。