Python之——IO程式設計
阿新 • • 發佈:2018-11-12
轉載請註明出處:https://blog.csdn.net/l1028386804/article/details/83041603
1、操作檔案和目錄
在Python中對檔案和目錄的操作經常用到os模組和shutil模組。
- 獲得當前Python指令碼工作的目錄路徑:os.getcwd()
- 返回指定目錄下的所有檔案和目錄名:os.listdir()。例如:返回C盤下的檔案:os.listdir('c:\\')
- 刪除一個檔案:os.remove(filepath)
- 刪除多個空目錄: os.removedirs(r'd:\python')
- 檢驗給出的路徑是否是一個檔案: os.path.isfile(filepath)
- 檢驗給出的路徑是否是一個目錄: os.path.isdir(filepath)
- 判斷是否是絕對路徑: os.path.isabs()
- 檢驗路徑是否是真的存在os.path.exists()。例如檢測D盤下是否有Python資料夾:os.path.exists(r:'d:\python')
- 分離一個路徑的目錄名和檔名:os.path.split()。例如:os.path.split(r'/home/lyz/lyz.txt'),返回一個元組('/home/lyz', 'lyz.txt')
- 分離副檔名: os.path.splitext()。例如:os.path.splitext(r'/home/lyz/lyz.txt'),返回的結果是一個元組('/home/lyz/lyz', '.txt')
- 獲取路徑名:os.path.dirname(filepath)
- 獲取檔名:os.path.basename(filepath)
- 獲取和設定環境變數: os.getenv()與os.putenv()
- 給出當前平臺使用的行終止符。os.linesep。Windows使用'\r\n',Linux使用'\n', Mac使用'\r'
- 指示你正在使用的平臺: os.name。對於Windows為'nt',對於Linux/Unix,它是'posix'
- 重新命名檔案或目錄: os.rename(old, new)
- 建立多級目錄: os.makedirs(r'c:\python\test')
- 建立單個目錄: os.mkdir('test')
- 獲取檔案屬性: os.stat(file)
- 修改檔案許可權與時間戳:os.chmod(file)
- 獲取檔案大小: os.path.getsize(filename)
- 複製資料夾: shutil.copytree("olddir", "newdir")。olddir和newdir都只能是目錄,且newdir必須不存在。
- 複製檔案: shutil.copyfile("oldfile", "newfile"), oldfile和newfile都只能是檔案; shutil.copy("oldfile", "newfile"),oldfile只能是檔案,newfile可以是檔案,也可以是目標目錄
- 移動檔案(目錄) shutil.move("oldops", "newops")
- 刪除目錄: os.rmdir("dir"), 只能刪除空目錄; shutil.rmtree('dir'),空目錄、有內容的目錄都可以刪除。
2、Python序列化
把記憶體中的變數變成可儲存或可傳輸的過程, 就是序列化。將記憶體中的變數序列化之後,可以把序列化後的內容寫入磁碟,獲取通過網路傳輸到別的機器上,實現程式狀態的儲存和共享。反過來,把變數內容從序列化的物件重新讀取到記憶體,稱為反序列化。
在Python中提供了兩個模組:cPickle和pickle來實現序列化。一般程式設計的時候,採取的方案是先匯入cPickle模組,如果此模組不存在,再匯入pickle模組。示例如下:
try:
import cPickle as pickle
except ImportError:
import pickle
pickle實現序列化主要是使用dumps方法或dump方法。dumps方法可以將任意物件序列化成一個str,然後可以將這個str寫入檔案進行儲存。在Python Shell中示例如下:
>>> import cPickle as pickle
>>> d = dict(url = 'index', title = '首頁', content = '首頁')
>>> pickle.dumps(d)
如果使用dump方法,可以序列化後的物件直接寫入檔案中:
>>> f = open(r'd:\dump.txt', 'w')
>>> pickle.dump(d, f)
>>> f.close()
pickle實現反序列化使用的是loads方法或load方法。把序列化後的檔案從磁碟上讀取為一個str,然後使用loads方法將這個str反序列化為物件,或者直接使用load方法將檔案直接反序列化為物件,如下所示:
>>> f = open(r'd:\dump.txt', 'rb')
>>> d = pickle.load(f)
>>> f.close()
>>> d
通過返序列化,儲存為檔案的dict物件,又重新恢復出來,但是這個變數個原變數沒有什麼關係,只是內容一樣。