Python的標準庫中的os模組包含普遍的作業系統功能。如果你希望你的程式能夠與平台無關的話,這個模組是尤為重要的。即它允許一個程式在編寫後不需要任何改動,也不會發生任何問題,就可以在Linux和Windows下運行。
下面列出了一些在os模組中比較有用的部分。它們中的大多數都簡單明了。
os.sep可以取代作業系統特定的路徑分隔字元。windows下為 “\\”
os.name字串指示你正在使用的平台。比如對於Windows,它是'nt',而對於Linux/Unix使用者,它是'posix'。
os.getcwd()函數得到當前工作目錄,即當前Python指令碼工作的目錄路徑。
os.getenv()擷取一個環境變數,如果沒有返回none
os.putenv(key, value)設定一個環境變數值
os.listdir(path)返回指定目錄下的所有檔案和目錄名。
os.remove(path)函數用來刪除一個檔案。
os.system(command)函數用來運行shell命令。
os.linesep字串給出當前平台使用的行終止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。
os.path.split(p)函數返回一個路徑的目錄名和檔案名稱。
os.path.isfile()和os.path.isdir()函數分別檢驗給出的路徑是一個檔案還是目錄。
os.path.existe()函數用來檢驗給出的路徑是否真地存在
os.curdir:返回目前的目錄('.')
os.chdir(dirname):改變工作目錄到dirname
os.path.getsize(name):獲得檔案大小,如果name是目錄返回0L
os.path.abspath(name):獲得絕對路徑
os.path.normpath(path):規範path字串形式
os.path.splitext():分離檔案名稱與副檔名
os.path.join(path,name):串連目錄與檔案名稱或目錄
os.path.basename(path):返迴文件名
os.path.dirname(path):返迴文件路徑
第一個python程式(python 3.1.2)
建立檔案(makeTextFile.py)
"這個指令碼提醒使用者輸入一個(尚不存在的)檔案名稱,然後由使用者輸入該檔案的每一行。最後,將所有文本寫入檔案"#!/user/bin/env python'makeTextFile.py -- create text file'import osls = os.linesep#get filenamefilename = input('Enter a file name:')while True: if os.path.exists(filename): print("ERROR: '%s' already exists" % filename) else: break#get file content(text) linesall = []print("\nEnter lines ('.' by iteself to quit).\n")#loop until user terminates inputwhile True: entry = input('>') if entry == '.': break else: all.append(entry)#write lines to file with proper line-endingfobj = open(filename, 'w')fobj.writelines(['%s%s' %(x, ls) for x in all])fobj.close()print("Done!")
程式很簡單,相對複雜的就下面這句話
fobj.writelines(['%s%s' %(x, ls) for x in all])
這個列表解析,把每行字元加上一個行結束符寫入到檔案裡。
讀取檔案(readTextFile.py)
#!/user/bin/env python'readTextFile.py -- read and display text file'#get file namefname = input('Enter file name:')print()#attempt to open file for readingtry: fobj = open(fname, 'r')except IOError as e: print("*** file open error", e)else: #display contents to the screen for eachLine in fobj: print(eachLine, end='') fobj.close()
這個裡面加入了一些異常處理
裡面可能比較奇怪的就是我自己修改的這句話了
print(eachLine, end='')
print裡面加入end=’’這個參數可以消除print自身添加的分行符號,那樣就是可以保持輸出顯示是和原檔案一模一樣了,不然每行就會多個分行符號。
你還可以採用這樣的方法來去掉那個分行符號
print(eachLine.strip())