[問題] Mac用程式改AV片名改到檔案不見

看板Python作者 (暴風雪之喀秋莎)時間3年前 (2020/08/31 12:39), 3年前編輯推噓11(11040)
留言51則, 12人參與, 3年前最新討論串1/1
最近整理謎片時有一堆需要重新命名的檔案 片名大概是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

08/31 13:03, 3年前 , 1F
有沒有可能video_name.text都抓到一樣的東西結果就覆寫
08/31 13:03, 1F

08/31 13:04, 3年前 , 2F
掉 你應該先copy在rename比較保險
08/31 13:04, 2F

08/31 14:05, 3年前 , 3F
我後來發現不只小寫檔案被刪除,確切來說有一部分的檔
08/31 14:05, 3F

08/31 14:05, 3年前 , 4F
案消失了,但不知道是哪一些
08/31 14:05, 4F

08/31 14:10, 3年前 , 5F
連結怪怪的 打不開
08/31 14:10, 5F
是看不到程式碼還是沒有連到github呢?

08/31 16:54, 3年前 , 6F
這個問題我想會需要檔案研究用
08/31 16:54, 6F

08/31 16:58, 3年前 , 7F

08/31 16:58, 3年前 , 8F
c400dbf746245d584b09f3b5c6
08/31 16:58, 8F
後來我發現硬碟空間結結實實地多了1TB,整個程式會操作到檔案的應該只有os.rename(), 因為我有發現從開頭字母來看,S開頭以後的檔案跟小寫開頭的檔案都消失了。 ※ 編輯: kiwistar (114.136.208.140 臺灣), 08/31/2020 17:08:27

08/31 18:24, 3年前 , 9F
這個問題我需要檔案來研究
08/31 18:24, 9F

08/31 23:49, 3年前 , 10F
真了不起,寫程式做這種事 XDDDD
08/31 23:49, 10F

08/31 23:50, 3年前 , 11F
iteration 裡,很忌誨邊改邊遞歸你的指標,因為不可預測
08/31 23:50, 11F

08/31 23:50, 3年前 , 12F
舉例來說,如果寫個 for loop 說要由前往後刪一個字串
08/31 23:50, 12F

08/31 23:51, 3年前 , 13F
一開始刪 string[0], 接著刪 string[1], 你覺得對嗎?
08/31 23:51, 13F

08/31 23:51, 3年前 , 14F
剛才的 [1] 現在跑到 [0] 了,你到底要對誰動作呢?邊走
08/31 23:51, 14F
這樣會刪掉原本的0、2、4、6...? 可是我只是改檔名,而沒有改檔案。這樣應該不會影響指標? 我有注意到,中間有幾次程式出現錯誤,例如網路突然不穩導致預期的頁面沒有出來。但我重跑程式以後,它不會從頭iteration,而是會從上次跑到斷掉的地方繼續開始,還滿神奇的。

08/31 23:52, 3年前 , 15F
邊改無法厘清你的行為,必需把你所有檔案寄到我家試試..
08/31 23:52, 15F

08/31 23:52, 3年前 , 16F
順便寄包衛生紙來,我怕家裡的不夠,謝謝..
08/31 23:52, 16F
可以喔!寄一顆4TB給我,我幫你裝滿(誤

09/01 00:03, 3年前 , 17F
我寫了一個打番號自動查自動載再上傳雲端,我都不知道我
09/01 00:03, 17F
自動載這個太厲害了...

09/01 00:03, 3年前 , 18F
在幹嘛..
09/01 00:03, 18F

09/01 00:04, 3年前 , 19F
我建議不要拿片名當檔名,有時候特殊字或是太長之類的問
09/01 00:04, 19F

09/01 00:04, 3年前 , 20F
題很多,我是在產生一個json存檔名
09/01 00:04, 20F
我因為需要歸檔所以長久以來的習慣是用片名當檔名。在這次的程式有造成問題,就是片名有"/"就會錯誤。所以我又寫了一個if去把可能出現的"/"代換成空格QQ ※ 編輯: kiwistar (114.136.208.140 臺灣), 09/01/2020 02:31:13

09/01 05:26, 3年前 , 21F
string 的例子你理解了?刪到 0,2,4,6 看來你是猜對了
09/01 05:26, 21F

09/01 05:27, 3年前 , 22F
可是你知道檔案的 iteration 是什麼原則嗎?萬一是檔名排
09/01 05:27, 22F

09/01 05:27, 3年前 , 23F
序,而你又改檔名,那造成的混亂比 string 還嚴重啊!
09/01 05:27, 23F

09/01 05:28, 3年前 , 24F
除非你針對檔案建立 handle,而後不管檔名如何改變,
09/01 05:28, 24F

09/01 05:28, 3年前 , 25F
handle不變,否則要怎麼 iteration 這些檔?
09/01 05:28, 25F

09/01 20:28, 3年前 , 26F
用檔名當 tag 用 id 當檔名 不然沒辦法避免奇怪字元
09/01 20:28, 26F

09/01 20:29, 3年前 , 27F
的問題巴 說不定檔案沒不見 只是用 windows 檔案總管
09/01 20:29, 27F

09/01 20:30, 3年前 , 28F
看不到 你裝 cygwin 去同個資料夾看看
09/01 20:30, 28F

09/01 20:50, 3年前 , 29F
然後奇怪字元可以用 pat = re.compile(r'a|b', re.I)
09/01 20:50, 29F

09/01 20:51, 3年前 , 30F
pat.sub('', input_text) 一次取代多種奇怪字元
09/01 20:51, 30F

09/01 20:53, 3年前 , 31F
re.compile 放在迴圈外面 可以避免重複製造object
09/01 20:53, 31F

09/02 19:00, 3年前 , 32F
借轉av版
09/02 19:00, 32F

09/03 10:32, 3年前 , 33F
大家超熱心WWWW
09/03 10:32, 33F

09/03 13:41, 3年前 , 34F
回C大,我的OS是mac。然後我可能會再用空的資料夾實驗
09/03 13:41, 34F

09/03 13:41, 3年前 , 35F
一下。處理特殊字元的確也很重要。
09/03 13:41, 35F

09/04 01:14, 3年前 , 36F
其實你該做的是 hit rate, 播放率統計,然後把不愛看的刪
09/04 01:14, 36F

09/04 01:15, 3年前 , 37F
掉.. 取檔名也該用自己的風格,比如人名系列,動作系列
09/04 01:15, 37F

09/04 01:15, 3年前 , 38F
重點是要方便你搜尋
09/04 01:15, 38F

09/04 03:19, 3年前 , 39F
我以前會刪不愛看的,後來我發現我常常一兩年後突然想
09/04 03:19, 39F

09/04 03:19, 3年前 , 40F
看當初被我刪掉過的片...後來就很少刪了,除非真的是o
09/04 03:19, 40F

09/04 03:19, 3年前 , 41F
utliers
09/04 03:19, 41F
※ 編輯: kiwistar (223.137.126.59 臺灣), 09/04/2020 03:23:35

09/04 12:04, 3年前 , 42F
哈哈哈哈哈哈哈抱歉我從頭笑到尾!respect!
09/04 12:04, 42F

09/04 13:29, 3年前 , 43F
這有點難解釋 請先提供檔案
09/04 13:29, 43F

09/04 14:08, 3年前 , 44F
我懷疑是資料的問題 可以提供資料我幫你檢查看看
09/04 14:08, 44F

09/04 14:38, 3年前 , 45F
用 move 到另一個子目錄的方法,目前這個子目錄漸漸清空
09/04 14:38, 45F

09/04 14:38, 3年前 , 46F
這樣就絕不會重覆處理;處理時從後往前,比如刪字串,如
09/04 14:38, 46F

09/04 14:39, 3年前 , 47F
如果你從最後一句往前刪,就不會有邊刪邊移動的問題
09/04 14:39, 47F

09/04 14:39, 3年前 , 48F
凡是 iter 的都適用這原則,由後往前都不會出事..
09/04 14:39, 48F

09/04 14:40, 3年前 , 49F
不然就是有的 compiler 會檢查並提醒你必需先 copy 一份
09/04 14:40, 49F

09/04 14:40, 3年前 , 50F
handle,以 copy 的運作,就不會邊刪邊移動,否則會跳出錯
09/04 14:40, 50F

09/04 14:41, 3年前 , 51F
誤訊息,通常用 consist 這字眼,指你的資料造成不一致..
09/04 14:41, 51F
文章代碼(AID): #1VJ7y3dm (Python)