1. 程式人生 > >Python之——IO程式設計

Python之——IO程式設計

轉載請註明出處: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物件,又重新恢復出來,但是這個變數個原變數沒有什麼關係,只是內容一樣。