1. 程式人生 > 實用技巧 >python之資料處理

python之資料處理

#檔案資料讀寫的基本操作
import this
#本地檔案的界定:指向一個本地儲存的檔案,是一個連線或者一個對映
path1 = 'C:\\Users\\11786\\Desktop\\test.txt'#正斜線兩個或者反斜線一個來用於資料路徑的表達  再或者用r 寫在檔案路徑外面 推薦第三種
path2 = 'C:/Users/11786/Desktop/test.txt'
path3 = r'C:\Users\11786\Desktop\test.txt'

print(path1)
print(path2)
print(path3)
 #讀取檔案 用open 語句
f = open(path1,'
r',encoding ='utf8') print(type(f)) print(f) print(f.read()) #open('路徑','模式',encoding='編碼') #模式 r:讀取檔案, 預設:w ;寫入:rw(讀取加寫入) a:追加 #簡答的讀取辦法 .read() 讀取後,游標會停留在讀取末尾 print('二次讀取') print(f.read()) print('二次讀取完畢') #當執行第一次.read()之後,游標處於文件末尾 ,再次讀取輸出的結果為空 f.seek(0)#移動游標的位置到文件開頭 0 print('三次讀取') print(f.read())
print('三次讀取完畢') f.close() print('四次讀取') print(f.read()) print('四次讀取完畢') #print(f.read())關閉檔案後無法讀取 #關閉檔案連結 f.close()形成一個好習慣
#系統模組下的路徑操作方法 os模組提供了豐富的方法來處理檔案和目錄
import os
print(os.name)#輸出字串正在使用的平臺,如果是windows則用nt 表示 對於linux則是posix
print(os.getcwd())#返回當前路徑 當前python指令碼工作的目錄路徑
print(os.listdir())#返回指定目錄下的所有檔案和目錄名
os.chdir('C:/Users/11786/Desktop/')#切換到目標路徑 print(os.getcwd()) print(os.listdir()) #os.remove('test2.txt ') #刪除目標路徑下的檔案 flst = os.path.split('C:/Users/11786/Desktop/test.txt')#函式返回一個路徑的目錄名和檔名 print(flst,type(flst)) print(os.path.exists('C:/Users/11786/Desktop/test.txt'))#判斷路徑下是否有檔案 或者路徑 print(os.path.exists('C:/Users/11786/Desktop')) #建議先定義一個工作的目錄 之後用相對路徑定位選擇就好
#檔案的讀取與寫入
#檔案讀寫read
os.chdir('C:/Users/11786/Desktop/') 
f = open('test.txt','r',encoding ='utf8')#txt儲存的時候的編碼設定  ANSI-‘gbk’ UTF_8 -'utf8'
print(f.read())
f.seek(0)

print(f.read(10))#讀取檔案的前十個檔案  記得每次用seek將游標移動到文件開頭
f.seek(0)

f.seek(0)
print(f.readline())
print(f.readline())#按照行來讀取文件 一次性讀取一行 
f.seek(0)
print(f.readline(10))#讀取改行的前n個元素 f.readline(n)

#遍歷一個檔案:for語句+f.readlines()
f.seek(0)
print(f.readlines())
for line in f.readlines():
    print(line)
#小作業 利用百度POI小外掛來爬去一些pol資料,然後存成txt,然後再用python讀取,編寫成一個json形式(列表字典)
os.chdir('C:/Users/11786/Desktop/') 
f = open('資料.txt','r',encoding ='gbk ') #這裡的資料.tex為從POI等工具上下載下來的無序資料 
#思路構建:觀察獲取的資料,獲取每一行  每一行中用:分隔的前面為名字 後面為具體經緯度資訊,於是先切片得到名字name
#隨後在information中得到具體的經緯度資訊 整理將其寫入空的字典中m  用n來計算迴圈的次數
m = []
n = 0
f.seek(0)
for line in f.readlines():
    n+=1
    st1 = line.split(':')
    name = st1[0]
    information = st1[1]
    print(information)
    st2 = information.split(',')
    lng = st2[0]
    lat = st2[1]
    add = st2[2].strip()
    data = [['name', name],['lng', lng],['lat', lat],['address',add]]
    m.append(dict(data))
    print(dict(data))
print(m[:10]) 
print('\n總共轉換資料多少條'%n)