Python基礎之IO文件目錄的操作

在程序設計的過程中我們必須和數據文件打交道,這些數據往往是存儲在本地磁盤文件或者網絡數據。這裏我們主要側重本地文件的操作,網絡數據採集屬於爬蟲的範圍。
在Abaqus二次開發過程中,我們主要運用Python進行處理Abaqus的odb數據文件處理成txt以供matlab進行數據運算,matlab再返回Abaqus能識別的inp文件進行建模。
1.文件的讀寫
首先讀寫涉及到IO模塊,在使用之前必須導入相應模塊
用到的函數包括:
open(‘hello.txt’,’w’):用於打開或者創建一個文件對象hello.txt,另一個參數是對文件的打開模式:w:表示寫入;r:表示讀取,b:表示以二進制形式操作文本,t:表示以文本形式打開(默認的就是這個),+:表示對文件進行更新,比如追加append
writelines():用來寫入要記錄的文件內容
readlines():用來讀取對應文件的內容到一個列表中。
close():函數用於關閉文件對象。
以上就是常用創建文件的操作函數,也是創建文件對象的步驟。
實例:

#coding = utf-8

import io
#創建文件對象並寫入數據
f1 = open('helloWy.txt','w')
str =['shanshui','wangyun','ynu','Python','Java']
for item in str:
    item = item+"\n"
    f1.writelines(item)
f1.close()

#對數據進行讀取操作
f2 = open('helloWy.txt','r')
str2 = f2.readlines()
length = len(str2)
for item in str2:
    print(item)
print('讀取的字符長度'+length)
f2.close()
=====================================================
運行結果
5
shanshui
wangyun
ynu
Python
Java

2.目錄操作:
在文件的基礎上,目錄操作也是一個新問題,目錄操作用到模塊:os;os.path;
常用方法:
os.getcwd():獲取當前工作目錄
os.path.dirname():返回當前文件對象的父級目錄
os.listdir():返回當前文件下的所有子目錄或者文件。
os.path.join(父級目錄,文件名):函數用於將參數給定的目錄和文件名拼接完整目錄
os.path.isdir()/isfile():判斷參數是否是文件夾/文件
實例:

#By shanshui 2017.10.12
#coding=utf-8

import os
import os.path

#顯示當前文件所在的目錄
currdir = os.getcwd()
print(type(currdir))
print('當前的目錄文件夾是:'+currdir)

fatherdir = os.path.dirname(currdir)#該函數返回指定文件或文件的上一級目錄的路徑,也就是父級目錄
print('當前的父目錄爲:'+fatherdir)
#列出當前文件上一級目錄下的文件和目錄
#並將信息保存到dir.txt中去

f = open('dir.txt','w')
infor = os.listdir(fatherdir)#該函數以列表的形式返回當前目錄下的所有子目錄和文件

FileNum = 0
DirNum = 0
for item in infor:
    tempdir = os.path.join(fatherdir,item)#將所給的目錄和文件名重新組合成爲一個完整目錄
    if os.path.isdir(tempdir):
        DirNum = DirNum+1
        tempstr = 'dir:'+tempdir+'\n'
        f.writelines(tempstr)
    elif os.path.isfile(tempdir):
        FileNum = FileNum+1
        tempstr = 'file:'+tempdir+'\n'
        f.writelines(tempstr)

tempstr1 = 'you get '+str(DirNum)+'dirs in the path.\n'
tempstr2 = 'you get '+str(FileNum)+'files in the path.\n'
f.writelines(tempstr1)
f.writelines(tempstr2)
f.close()
==================================================
運行結果:
dir:C:\Users\Administrator\PycharmProjects\Abaqus
dir:C:\Users\Administrator\PycharmProjects\CourseCode
dir:C:\Users\Administrator\PycharmProjects\DataProcessTest
dir:C:\Users\Administrator\PycharmProjects\GUI
dir:C:\Users\Administrator\PycharmProjects\PythonBook
dir:C:\Users\Administrator\PycharmProjects\PythonTest
dir:C:\Users\Administrator\PycharmProjects\Scraping
dir:C:\Users\Administrator\PycharmProjects\Test
dir:C:\Users\Administrator\PycharmProjects\untitled
dir:C:\Users\Administrator\PycharmProjects\WebScraper
you get 10dirs in the path.
you get 0files in the path.

在os中還存在一個強大迭代函數:os.walk():逐級向下返回目錄下的所有文件

3.文件的清理操作:在ABAQUS的工作目錄下,會形成很多文件,對我們有用的只有odb,inp,cae,fil等文件,所以對其他文件進行清理就很有必要:
主要的調用函數:
os.chdir(targetdir):用來改變當前的工作目錄。
os.mkdir(path):以參數給定的目錄路徑創建文件
os.path.splitext(path):對給定路徑的的文件把文件名和文件的擴展名分離開。返回(文件名,擴展名
os.remove(path):刪除指定文件路徑的文件對象。

運用實例:對Abaqus的運行結果進行文件清理和保留有用文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章