一、獲取當前目錄下的特定文件列表
>>>import glob,os
>>>curdir = os.getcwd()?? #獲取當前目錄
>>>os.chdir(workdir)??????? #設置當前目錄
>>>dir = glob.glob('*.dat')? #獲取當前目錄的dat文件列表
>>>os.chdir(curdir)?????????? #還原當前工作目錄
>>>print dir
['mudlog.dat','ddd.dat']
二、os模塊的文件和目錄操作函數
1.獲得當前路徑
os.getcwd()
? 該函數不需要傳遞參數,它返回當前的目錄。
?
>>> import os
>>> print 'current directory is ',os.getcwd()
current directory is? D:/Python25/Lib/site-packages/pythonwin
#這里是PythonWin的安裝目錄
2.獲得目錄中的內容
os.listdir(path)???? path:要獲得內容目錄的路徑。
>>> import os
>>> os.listdir(os.getcwd())??? # 獲得當前目錄中的內容
['dde.pyd', 'license.txt', 'Pythonwin.exe', 'scintilla.dll', 'win32ui.pyd',
'win32uiole.pyd', 'pywin']
3.創建目錄
os.mkdir(path)??? path:要創建目錄的路徑。
>>> import os
>>> os.mkdir('E://book//temp')?? # 使用os.mkdir創建目錄
4.刪除目錄
os.rmdir(path)?? path:要刪除的目錄的路徑。
>>> import os
>>> os.rmdir('E://book//temp')?? # 刪除目錄
需要說明的是,使用os.rmdir刪除的目錄必須為空目錄,否則函數出錯。
若想刪除非空目錄,先刪除目錄下的文件,然后再刪除目錄,遞歸過程。
5.判斷是否是目錄
os.path.isdir(path)??? path:要進行判斷的路徑。
>>> import os
>>> os.path.isdir('E://book//temp')? # 判斷E:/book/temp是否為目錄
True?????????? # 表E:/book/temp是目錄
6.判斷是否為文件
os.path.isfile(path)?? path:要進行判斷的路徑。
>>> import os
>>> os.path.isfile('E://book//temp')? # 判斷是否為文件
False?????????? # 表示E:/book/temp不是文件
三、批量重命名
在日常工作中經常會遇到這樣的情況,需要將某個文件夾下的文件按照一定的規律重新命名。如果手工完成的話,需要耗費大量的時間,而且
容易出錯。在學習Python以后,完全可以寫一個簡單的腳本完成這樣的工作。
import os
perfix = 'Python'????? # perfix 為重命名后的文件起始字符
length = 2???????? # length 為除去perfix后,文件名要達到的長度
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 files in %s will be renamed' % os.getcwd()
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)????? # 將i轉換成字符
name = PadLeft(name,length,'0') # 將name補全到指定長度
t = filename.split('.')?? # 分割文件名,以檢查其是否是所要修改的類型
m = len(t)
if format == '':???? # 如果未指定文件類型,則更改當前目錄中所有文件
os.rename(filename,perfix+name+'.'+t[m-1])
else:??????? # 否則只修改指定類型
if t[m-1] == format:
os.rename(filename,perfix+name+'.'+t[m-1])
else:
i = i – 1???? # 保證i連續
else:
i = i – 1?????? # 保證i連續
四、代碼框架生成器
編寫代碼要養成良好的習慣,為了使腳本更具可讀性,往往需要添加注釋,而且還應該在腳本頭添加基本的說明,如作者、文件名、日期、用途、版權說明,以及所需要使用的模塊等信息。這樣,不僅便于保存腳本,而且也便于交流。但是,如果每次編寫一個腳本就依次添加這樣的信息,不免有些麻煩,以下代碼實現了一個簡單的代碼框架生成器。
# -*- 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()??? # 獲得當前日期,并格式化為xxxx-xx-xx的形式
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(' /n')
else:
print 'just create %s' % sys.argv[1]
file.close()??????? # 關閉文件
寫好的腳本可以放到Windows的系統目錄中,這樣就可以隨時運行,方便地在目錄中產生Python腳本或者C/C++文件。
五、運行其他程序
在Python中可以方便地使用os模塊運行其他的腳本或者程序,這樣就可以在腳本中直接使用其他腳本,或者程序提供的功能,而不必再次編寫實現該功能的代碼。
使用os.system函數運行其他程序
os模塊中的system()函數可以方便地運行其他程序或者腳本。其函數原型如下所示。
os.system(command)????? command :要執行的命令,相當于在Windows的cmd窗口中輸入的命令。如果要向程序或者腳本傳遞參數,可以使用空格分隔程序及多個參數。
以下實例實現通過os.system()函數打開系統的記事本程序。
>>> import os
# 使用os.system()函數打開記事本程序
>>> os.system('notepad')
0 # 關閉記事本后的返回值
# 向記事本傳遞參數,打開python.txt文件
>>> os.system('notepad python.txt')
From:http://book.51cto.com/art/200710/58166.htm
>>>import glob,os
>>>curdir = os.getcwd()?? #獲取當前目錄
>>>os.chdir(workdir)??????? #設置當前目錄
>>>dir = glob.glob('*.dat')? #獲取當前目錄的dat文件列表
>>>os.chdir(curdir)?????????? #還原當前工作目錄
>>>print dir
['mudlog.dat','ddd.dat']
二、os模塊的文件和目錄操作函數
1.獲得當前路徑
os.getcwd()
? 該函數不需要傳遞參數,它返回當前的目錄。
?
>>> import os
>>> print 'current directory is ',os.getcwd()
current directory is? D:/Python25/Lib/site-packages/pythonwin
#這里是PythonWin的安裝目錄
2.獲得目錄中的內容
os.listdir(path)???? path:要獲得內容目錄的路徑。
>>> import os
>>> os.listdir(os.getcwd())??? # 獲得當前目錄中的內容
['dde.pyd', 'license.txt', 'Pythonwin.exe', 'scintilla.dll', 'win32ui.pyd',
'win32uiole.pyd', 'pywin']
3.創建目錄
os.mkdir(path)??? path:要創建目錄的路徑。
>>> import os
>>> os.mkdir('E://book//temp')?? # 使用os.mkdir創建目錄
4.刪除目錄
os.rmdir(path)?? path:要刪除的目錄的路徑。
>>> import os
>>> os.rmdir('E://book//temp')?? # 刪除目錄
需要說明的是,使用os.rmdir刪除的目錄必須為空目錄,否則函數出錯。
若想刪除非空目錄,先刪除目錄下的文件,然后再刪除目錄,遞歸過程。
5.判斷是否是目錄
os.path.isdir(path)??? path:要進行判斷的路徑。
>>> import os
>>> os.path.isdir('E://book//temp')? # 判斷E:/book/temp是否為目錄
True?????????? # 表E:/book/temp是目錄
6.判斷是否為文件
os.path.isfile(path)?? path:要進行判斷的路徑。
>>> import os
>>> os.path.isfile('E://book//temp')? # 判斷是否為文件
False?????????? # 表示E:/book/temp不是文件
三、批量重命名
在日常工作中經常會遇到這樣的情況,需要將某個文件夾下的文件按照一定的規律重新命名。如果手工完成的話,需要耗費大量的時間,而且
容易出錯。在學習Python以后,完全可以寫一個簡單的腳本完成這樣的工作。
import os
perfix = 'Python'????? # perfix 為重命名后的文件起始字符
length = 2???????? # length 為除去perfix后,文件名要達到的長度
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 files in %s will be renamed' % os.getcwd()
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)????? # 將i轉換成字符
name = PadLeft(name,length,'0') # 將name補全到指定長度
t = filename.split('.')?? # 分割文件名,以檢查其是否是所要修改的類型
m = len(t)
if format == '':???? # 如果未指定文件類型,則更改當前目錄中所有文件
os.rename(filename,perfix+name+'.'+t[m-1])
else:??????? # 否則只修改指定類型
if t[m-1] == format:
os.rename(filename,perfix+name+'.'+t[m-1])
else:
i = i – 1???? # 保證i連續
else:
i = i – 1?????? # 保證i連續
四、代碼框架生成器
編寫代碼要養成良好的習慣,為了使腳本更具可讀性,往往需要添加注釋,而且還應該在腳本頭添加基本的說明,如作者、文件名、日期、用途、版權說明,以及所需要使用的模塊等信息。這樣,不僅便于保存腳本,而且也便于交流。但是,如果每次編寫一個腳本就依次添加這樣的信息,不免有些麻煩,以下代碼實現了一個簡單的代碼框架生成器。
# -*- 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()??? # 獲得當前日期,并格式化為xxxx-xx-xx的形式
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(' /n')
else:
print 'just create %s' % sys.argv[1]
file.close()??????? # 關閉文件
寫好的腳本可以放到Windows的系統目錄中,這樣就可以隨時運行,方便地在目錄中產生Python腳本或者C/C++文件。
五、運行其他程序
在Python中可以方便地使用os模塊運行其他的腳本或者程序,這樣就可以在腳本中直接使用其他腳本,或者程序提供的功能,而不必再次編寫實現該功能的代碼。
使用os.system函數運行其他程序
os模塊中的system()函數可以方便地運行其他程序或者腳本。其函數原型如下所示。
os.system(command)????? command :要執行的命令,相當于在Windows的cmd窗口中輸入的命令。如果要向程序或者腳本傳遞參數,可以使用空格分隔程序及多個參數。
以下實例實現通過os.system()函數打開系統的記事本程序。
>>> import os
# 使用os.system()函數打開記事本程序
>>> os.system('notepad')
0 # 關閉記事本后的返回值
# 向記事本傳遞參數,打開python.txt文件
>>> os.system('notepad python.txt')
From:http://book.51cto.com/art/200710/58166.htm