[問題] 提取txt內文後重命名檔名

作者: s4028600 (佑)   2017-12-02 00:21:35
首先我是個超級小白
這是我目前弄出來的東西
f = open('11.txt',encoding = 'utf8')
lines = f.readlines()
print (lines[2])
重命名還完全沒頭緒...之後再說...
首先有幾個問題
第1
11.txt只是其中一個檔案
一個一個改檔案名也太多了
我要如何自動處理多數檔案?
第2
我的py檔打算和txt放在一起
然後像bat檔一樣開啟後自動執行
有辦法嗎?
第3
有辦法保留執行畫面嗎?
像bat檔的pause
拜託各位幫忙了
感謝
作者: BigBank ( )   2017-12-02 01:02:00
1. os.walk() 2.3.看不太懂 寫bat檔執行python?
作者: s4028600 (佑)   2017-12-02 01:27:00
查了一下os.walk看不懂 把os.walk放到open裡面?
作者: stucode   2017-12-02 05:02:00
1. os.walk() 2. os.getcwd() 後 os.walk()3. input() 或者 os.system('pause')os.walk() 搭配 for ... in 使用。原 PO 如果沒有程式基礎的話,建議先找個基本教學看到迴圈部分再回來寫。
作者: TitanEric (泰坦)   2017-12-02 18:16:00
我都用os.listdir 不過樓上們提到的方法也可以
作者: stucode   2017-12-02 22:28:00
glob 也可以,但它是傳回檔名 list,一樣要搭配 for 迴圈來走訪每個檔案。
作者: danny0838 (道可道非常道)   2017-12-02 23:10:00
可以翻翻官方文件 https://goo.gl/bbK5BC 裡面有範例右上角有搜尋按鈕,想知道任何 API 的用途及可用參數都可以輸進去查。平常不記得網址只要Google搜python doc前幾項就能找到官網。如果英文還是有困難,也可以輸入中文關鍵字Google,比如 "python 檔案更名"、"python 列出檔案" 不過中文資料品質就不一定那麼好,另外也要注意python 2和3語法不同,有些比較舊的文章是python 2,現在多半用python3,可能需要改一下程式碼才能用。
作者: stucode   2017-12-02 23:18:00
如果不知道現在用的是哪個版本,可以這樣確認:import sysprint(sys.version)open(x, ...) # x 不加括號。加括號的話會變成開啟檔名為x 的檔案。另外 f=open() 跟針對檔案處理的每個動作都要縮排,Python 是以縮排來決定程式碼區塊的。* 抱歉,我是要說不加引號。
作者: s4028600 (佑)   2017-12-03 00:01:00
行了 但是馬上出新問題... 只讀取最後一個檔案的第3行只好再試試了
作者: danny0838 (道可道非常道)   2017-12-03 01:02:00
縮排先弄正確,如果還是出錯要貼錯誤訊息才能判斷一個可能原因是該行有某些字元不允許用於檔名你得想好遇到不能用於檔名的字元要怎麼處理
作者: s4028600 (佑)   2017-12-03 04:05:00
已經確定有兩個原因 一個是檔案被佔用 一個確實是字符字元有點頭痛 很難刪除但是不知道為什麼只讀取一個檔案很奇怪 是要用for嗎?試不出編碼
作者: stucode   2017-12-03 10:37:00
檔案佔用是因為開檔讀取後沒有關閉,兩個解決方法:f.close() 或 with open(...) as f:個人比較推薦後者,但前者對你來說可能比較好理解。readlines() 讀取的字串中包含換行字元 '\n',要用於重新命名之前記得先裁掉(關鍵字:字串處理),其餘部分就是danny 大提到的檔案系統不接受的字元,這部分依照需求處理方式不同,但一樣是做字串處理。只讀取最後一個檔案的問題,請去 google Python 縮排,中文資料也不少。
作者: djshen (djshen)   2017-12-03 11:38:00
你知道for loop怎麼用嗎?你要不要一步一步來 1讀單一檔案 2拿到正確檔名 3 rename4寫成loop形式全部混在一起你自己也不知道哪裡出問題沒人可以幫你測試 別人又沒有你的檔案
作者: s4028600 (佑)   2017-12-03 14:48:00
ok 感謝 現在只剩下4寫成loop形式 但是寫不出解法…縮排?都可以執行啊?空白鍵在手機ptt會不見 要整頁模式
作者: youngman77 (大咩)   2017-12-03 18:15:00
你有把f=open之後的code都空四格嗎?
作者: ncueBenson (nuceBenson29)   2017-12-03 20:24:00
python 的for 是用空格控制唷 所以你在for的:之後有加上四格空格的都會在迴圈裡面
作者: s4028600 (佑)   2017-12-03 21:47:00
還好改名後不是txt檔
作者: stucode   2017-12-03 22:38:00
while True: 拿掉,for 前面不要有空格。

Links booklink

Contact Us: admin [ a t ] ucptt.com