python文件變化
① 如何用python語言監控文件或目錄變化
import os, time
path_to_watch = "."before = dict ([(f, None) for f in os.listdir (path_to_watch)])while 1:
time.sleep (10)
after = dict ([(f, None) for f in os.listdir (path_to_watch)])
added = [f for f in after if not f in before]
removed = [f for f in before if not f in after] if added: print "Added: ", ", ".join (added) if removed: print "Removed: ", ", ".join (removed)
before = after
② Python 文件操作
open(filename[,mode,encoding="編碼"]) :第一個參數文件名如果不加路徑,默認在該py文件目錄下(路徑舉例: E:/XXX或E:\xxx ),第二個是模式,默認為 'r' ——只讀,舉例: f = open('E:/abc.txt') ,如果要轉編碼並寫入模式:
f = open('E:/abc.txt','w',encoding='utf-8')
1. 模式
2. 方法
(1) close() : 關閉文件,因為文件寫入時是寫在內存,只有關閉時才寫入硬碟,所以寫完記得關閉
(2) read(size = -1) :讀取文件size個字元,不寫默認是-1,此時讀取所有內容(換行按
來表示,很不好看),並作為字元串返回,一定要注意 讀完以後文件指針將會指向末尾 ,所以下一次在用read方法時會發現讀取不出內容了,所以這個就要用seek移動指針或者關閉文件重新定義
(3) tell() :返回當前文件指針指向的位置
(4) seek(offset,from) :移動文件指針,代表從from參數開始偏移offset個位元組,0代表起始位置,1代表當前位置,2代表文件末尾
(5) readline() :按序列讀取一行內容,默認
為邊界
(6) write() :寫入內容,但必須要有寫入許可權才行,否則報錯,寫完會返回寫入的長度,例如: len1 = f.write('abc') ,此時len1就為3
(7) truncate() :刪除內容,把當前指針以後的內容全刪了,舉例:
註:
1.文件還可以轉化為 list 之類的,例如: list1 = list(f) ,此時文件內容的按
被隔開,然後可以用for語句讀取文件所有內容,舉例:
2.上面輸出文件內容方法相對低效,所以一般都直接用for輸出整個文件,舉例:
通過 fileno 函數,我們可以查看一個文件對應的文件描述符,對應的是程序中打開的文件序號,舉例:
可以看出python在啟動時會先啟動標准流的文件(文件描述符分別為:0/1/2),所以之後打開的文件就從3開始遞增,當釋放一個文件資源時,該描述符序號被釋放,之後打開的文件可以繼續使用該序號的文件描述符
python中的 print 的本質是通過 sys.stdout 來進行內容輸出,而 sys.stdout 的本質是一個"文件",相當於我們所有的輸入輸出的本質都是在對 sys.stdin / sys.stdout / sys.stderr 這些文件來進行讀寫操作,舉例:
open 函數不僅可以打開本地文件,也可以打開文件描述符,而該參數默認為 True ,代表 close 後會將對應的文件資源釋放,而對於一些文件描述符,我們只是希望 close 時將打開文件描述符的對象釋放,而不釋放對應的文件資源,那麼則可以設置 closefd=False ,舉例:
需要使用到 chardet 模塊,按二進制可讀打開文件,然後通過 detect() 方法查看,舉例:
所以就可以根據文件來設置編碼了:
有時候使用文件的編碼解碼也可能會出現無法解析的情況,例如兩種編碼混在同一個文件里的時候,此時可以設置 errors 參數為 ignore 來避免該問題,示例:
可用 os 模塊下的 chmod() 函數,具體參考: http://www.runoob.com/python/os-chmod.html
使用 os 模塊下的 remove() 函數可以實現刪除文件,舉例:
可以使用自帶的 zipfile 模塊來進行操作,舉例:
可以使用自帶的 tarfile 模塊來進行操作,舉例:
https://www.cnblogs.com/lotusto/p/5805543.html
③ python 文件的打開與讀寫
/python通過解釋器內置的open()函數打開一個文件,並實現該文件與一個程序變數的關聯,open()函數格式如下:
/open()函數包含有兩個參數:文件名和打開模式.當文件與執行文件在同一大廳文件夾中,直接輸入文件名,亦可輸入文件的完整路徑.打開模式是指以何種方式打開文件,python提供了7種打開模式.
/r/w/x/a模式與b/t/+模式可以組合使悉仿悄用,比如'rt'為文睜渣本只讀.'rb'為二級制只讀.
/文件使用結束後,需要使用close()關閉文件使用許可權,釋放內存.
/當文件使用文本格式打開時,讀寫按照字元串方式,採用計算機當前編碼或指定編碼.
/當文件以二進制方式打開時,讀寫按照位元組流方式.
/python本身將文件讀取為一個行序列.
④ Python使用shelve文件,運行了幾次後文件體積突然增加一倍,每次存最新的
這個應用可以使用JavaConfig完成配置。我把它切分為下面幾個部分:
ServicesConfig(服務配置)
無需掃描組件,配置真的非常簡單:
@Configuration
public class ServicesConfig {
@Autowired
private AccountRepository accountRepository;
@Bean
public UserService userService() {
return new UserService(accountRepository);
}
⑤ python文件怎麼突然變成這個樣了
你看下這個是python的軟體文件,如果不是,你選擇文件,右擊一下,重新選擇打開這種類型的軟體即可