iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 28
0
  • rm刪除目錄

上篇有提到刪除檔案,要讓程式確認檔案存在才能刪除

import os
p = "mkdir.py"
ee = os.path.exists(p)  #p存在?
print(ee)

如果要大量刪除建立的dir組可以這樣

import os
a = int(input(u'刪幾個呢?'))
for i in range(0, a):
    i += 1
    dir  = "dir%d" %i
    if os.path.exists(dir):
        os.rmdir('./dir%d/' % i)
    else:
        print(u'dir不存在')

建立檔案

超久以前談到 stdio檔案流,就有類似方法。
(預設都可讀可寫)

a = input(u'請輸入副檔名')
open('test.%s' %a , 'w')
b = ('test.%s' % a)

1. 處理模式

不同的檔案會有不同的處理方式 像2進檔就不能用str寫入了,所以就需要切換模式控制。
除了"w",其他模式要讓open()處理檔案,檔案需存在

w = 可寫可讀(預設建立檔案) 若檔案存在則會清除舊檔案
w+ = 可寫可讀 若檔案存在則會清除舊檔案

r = 讀取
r+ = 可寫可讀 但寫入資料指向開頭

a = 相當於append 寫入資料指向尾端
a+ = 可寫可讀 相當於append 寫入資料指向尾端

b = 轉為2進位文件
ab+ = 2進位文件的讀寫 寫入資料指向尾端

  • 寫入和讀取

要進行寫入與讀取必須要先打開文件open()。而程式也一樣 所以讀寫前一定要先open()

import os 
ra = input(u"增加文字")
f = open('news.txt' , 'w+') #覆寫
f.write("94")
f.write("87")
f = open('news.txt', 'a+')  # 寫入EOF 不覆寫
f.write("%s" %ra)

讀檔案

#讀寫前一定先open()
f = open('news.txt', 'r+') 
print(f.read())

#記得隨手關燈
f.close()

2. 檔案指向

就像電腦的游標一樣 讓電腦清楚文字從哪裡寫入 預設檔案指向有頭跟尾。
需精確控制可用seek()方法控制指向。

  • 控制寫入位置seek()

f.seek(位移格數bit , 0)  #指向文件開頭
f.seek(位移格數bit , 1)  #指向預設位置
f.seek(位移格數bit , 2)  #指向文件結尾

可控制寫入檔案位置

f = open('news.txt', 'w+')
f.write("9487Good")
f = open("news.txt" , 'rb+') #位移須為bin
f.seek(2)
f.write(b'O') #bin檔寫入
f.seek(1, 1)
f.write(b'M')
f.seek(-2, 2) #結尾倒退2格
f.write(b'G')

文字編碼

文件中常常會有中文字或其他國的語言。為了避免亂碼,必須設定適合該文字的編碼
像str前面標小u表示unicode(萬國碼),但畢竟只能在windows用。
如果要實現跨平台的語言 建議改用UTF-8編碼。
Ex:(檔案跟程式編碼改用UTF-8)

# coding=utf-8
f = open('news.txt', 'w+') 
f.write("9487")
ra = input("增加文字")
#寫入文字編碼 UTF-8
f = open('news.txt', 'a+', encoding='UTF-8')  
f.write("%s" %ra)
#開啟檔案也要用同編碼
f = open('news.txt', 'r+', encoding='UTF-8')

上一篇
[D27] pythonOS_概論和檔案處理
下一篇
[D29] 檔案批次處理 & shutil
系列文
從寫程式到脫離菜雞的歷練(以python為主的資處與檔案權限)32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言