看板 Python 關於我們 聯絡資訊
最近整理謎片時有一堆需要重新命名的檔案 片名大概是ssni-157、ABP-990這樣 寫了一個程式去網站上爬出片名以後,再修改檔案名稱變成 "ABP-990 松岡すずの極上筆おろし 37 奇跡の淫女が2作目にして筆おろしセックスに 挑戦!" 這樣的完整名稱 程式碼如下: https://bit.ly/2QU25ON 執行時我觀察到iterator一開始在遍歷檔案的時候會按照開頭字母順序,但只會先看大 寫的檔名(如:MIDE-765),小寫檔名的會被跳過(如apkh-131)。 後來就放著讓他跑,睡覺去了。醒來以後發現不太對,有些小寫字母開頭的檔案好像消 失了。對,沒錯!!直接被刪掉了!! 但又不是全部,有些小寫檔名的檔案是還在且有成功被重新命名的。 我在程式碼裡已經處理過大小寫的問題了,但求教各位大大為什麼檔案會消失呢? ---- Sent from BePTT on my Google Pixel 4 XL -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.208.140 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1598848771.A.9F0.html
tsoahans: 有沒有可能video_name.text都抓到一樣的東西結果就覆寫08/31 13:03
tsoahans: 掉 你應該先copy在rename比較保險08/31 13:04
kiwistar: 我後來發現不只小寫檔案被刪除,確切來說有一部分的檔08/31 14:05
kiwistar: 案消失了,但不知道是哪一些08/31 14:05
TuCH: 連結怪怪的 打不開08/31 14:10
是看不到程式碼還是沒有連到github呢?
TitanEric: 這個問題我想會需要檔案研究用08/31 16:54
kiwistar: c400dbf746245d584b09f3b5c608/31 16:58
後來我發現硬碟空間結結實實地多了1TB,整個程式會操作到檔案的應該只有os.rename(), 因為我有發現從開頭字母來看,S開頭以後的檔案跟小寫開頭的檔案都消失了。 ※ 編輯: kiwistar (114.136.208.140 臺灣), 08/31/2020 17:08:27
OrzOGC: 這個問題我需要檔案來研究08/31 18:24
HuangJC: 真了不起,寫程式做這種事 XDDDD08/31 23:49
HuangJC: iteration 裡,很忌誨邊改邊遞歸你的指標,因為不可預測08/31 23:50
HuangJC: 舉例來說,如果寫個 for loop 說要由前往後刪一個字串08/31 23:50
HuangJC: 一開始刪 string[0], 接著刪 string[1], 你覺得對嗎?08/31 23:51
HuangJC: 剛才的 [1] 現在跑到 [0] 了,你到底要對誰動作呢?邊走08/31 23:51
這樣會刪掉原本的0、2、4、6...? 可是我只是改檔名,而沒有改檔案。這樣應該不會影響指標? 我有注意到,中間有幾次程式出現錯誤,例如網路突然不穩導致預期的頁面沒有出來。但我重跑程式以後,它不會從頭iteration,而是會從上次跑到斷掉的地方繼續開始,還滿神奇的。
HuangJC: 邊改無法厘清你的行為,必需把你所有檔案寄到我家試試..08/31 23:52
HuangJC: 順便寄包衛生紙來,我怕家裡的不夠,謝謝..08/31 23:52
可以喔!寄一顆4TB給我,我幫你裝滿(誤
TakiDog: 我寫了一個打番號自動查自動載再上傳雲端,我都不知道我09/01 00:03
自動載這個太厲害了...
TakiDog: 在幹嘛..09/01 00:03
TakiDog: 我建議不要拿片名當檔名,有時候特殊字或是太長之類的問09/01 00:04
TakiDog: 題很多,我是在產生一個json存檔名09/01 00:04
我因為需要歸檔所以長久以來的習慣是用片名當檔名。在這次的程式有造成問題,就是片名有"/"就會錯誤。所以我又寫了一個if去把可能出現的"/"代換成空格QQ ※ 編輯: kiwistar (114.136.208.140 臺灣), 09/01/2020 02:31:13
HuangJC: string 的例子你理解了?刪到 0,2,4,6 看來你是猜對了 09/01 05:26
HuangJC: 可是你知道檔案的 iteration 是什麼原則嗎?萬一是檔名排 09/01 05:27
HuangJC: 序,而你又改檔名,那造成的混亂比 string 還嚴重啊! 09/01 05:27
HuangJC: 除非你針對檔案建立 handle,而後不管檔名如何改變, 09/01 05:28
HuangJC: handle不變,否則要怎麼 iteration 這些檔? 09/01 05:28
chickengod: 用檔名當 tag 用 id 當檔名 不然沒辦法避免奇怪字元 09/01 20:28
chickengod: 的問題巴 說不定檔案沒不見 只是用 windows 檔案總管 09/01 20:29
chickengod: 看不到 你裝 cygwin 去同個資料夾看看 09/01 20:30
chickengod: 然後奇怪字元可以用 pat = re.compile(r'a|b', re.I) 09/01 20:50
chickengod: pat.sub('', input_text) 一次取代多種奇怪字元 09/01 20:51
chickengod: re.compile 放在迴圈外面 可以避免重複製造object 09/01 20:53
Tenging: 借轉av版 09/02 19:00
skyconquer: 大家超熱心WWWW 09/03 10:32
kiwistar: 回C大,我的OS是mac。然後我可能會再用空的資料夾實驗 09/03 13:41
kiwistar: 一下。處理特殊字元的確也很重要。 09/03 13:41
HuangJC: 其實你該做的是 hit rate, 播放率統計,然後把不愛看的刪 09/04 01:14
HuangJC: 掉.. 取檔名也該用自己的風格,比如人名系列,動作系列 09/04 01:15
HuangJC: 重點是要方便你搜尋 09/04 01:15
kiwistar: 我以前會刪不愛看的,後來我發現我常常一兩年後突然想 09/04 03:19
kiwistar: 看當初被我刪掉過的片...後來就很少刪了,除非真的是o 09/04 03:19
kiwistar: utliers 09/04 03:19
※ 編輯: kiwistar (223.137.126.59 臺灣), 09/04/2020 03:23:35
stillcolor: 哈哈哈哈哈哈哈抱歉我從頭笑到尾!respect! 09/04 12:04
wargods8402: 這有點難解釋 請先提供檔案 09/04 13:29
TuCH: 我懷疑是資料的問題 可以提供資料我幫你檢查看看 09/04 14:08
HuangJC: 用 move 到另一個子目錄的方法,目前這個子目錄漸漸清空 09/04 14:38
HuangJC: 這樣就絕不會重覆處理;處理時從後往前,比如刪字串,如 09/04 14:38
HuangJC: 如果你從最後一句往前刪,就不會有邊刪邊移動的問題 09/04 14:39
HuangJC: 凡是 iter 的都適用這原則,由後往前都不會出事.. 09/04 14:39
HuangJC: 不然就是有的 compiler 會檢查並提醒你必需先 copy 一份 09/04 14:40
HuangJC: handle,以 copy 的運作,就不會邊刪邊移動,否則會跳出錯 09/04 14:40
HuangJC: 誤訊息,通常用 consist 這字眼,指你的資料造成不一致.. 09/04 14:41
Rmmct: 神 08/01 16:54