在寫指令碼自動處理歸檔windows下本地檔案的時候真的特別頭疼,主要就是windows下檔案命名規則可以中文、夾帶空格以及路徑表示處理起來比較麻煩。
「\」表示路徑
不同於linux用「/」來進行當前目錄跟上一級目錄檔案的路徑分隔,windows使用反斜槓進行分隔表示。但是在python等程式語言中,反斜槓所作為轉義字元存在的,因此表示字元反斜槓需要「\\」進行表示。
print('\')
直譯器報錯:syntaxerror: eol while scanning string literal,引號被轉義,字串無終止
對比下面三種:
print('\\')
print('\d')
>>
\ 轉義反斜槓
\d 源字串反斜槓及之後不表示任何特殊含義字元,因此「\」原樣輸出作為字元
but,在這種反斜槓為主的系統下,對反斜槓字元的處理就很麻煩,比如正則替換。
將字串「\d\e」中的反斜槓匹配輸出:
import re
a = '\d\e'
print(re.compile('\\').search(a).group())
>>
file "c:\program files (x86)\microsoft visual studio\shared\python36_64\lib\sre_parse.py", line
245, in __next
self.string, len(self.string) - 1) from none
sre_constants.error: bad escape (end
ofpattern) at
position
0
compile中指定通配規則為「\」,並且使用了轉義正確表現反斜槓為普通字元,為啥提示類中字串異常eof?「\」作為字串引數傳遞給search時,被處理為正規表示式中的「\」字元,對正規表示式字串進行二次處理時,單乙個「\」又體現為轉義字元。修改如下:
import re
a = '\d\e'
print(re.compile('\\\\').search(a).group())
>>
\
windows中的路徑空格也是很頭疼的東西。
move a/b/c.txt a/c.txt 將a/b/下的檔案挪到a/目錄下
但是對於檔案c d.txt,檔名中間摻雜了空格:
move a/b/c d.txt a/c d.txt
>>the syntax of
thecommand
isincorrect.
雖然檔名空格是被允許的,但是這樣依賴語法解析只到空格作為分隔符為止,並不會認為c d.txt是乙個檔案,造成語法錯誤。
move
"a/b/c d.txt"
"a/c d.txt"
對於語法短句錯誤的路徑,加上雙引號就可以了。 python坑爹的黑店 1023 坑爹的黑店
題目描述 今天小明去了乙個風景如畫的地方散心,但是自己帶的飲料喝完了,小明口渴難耐,見不遠處有家小商店,於是跑去買飲料。小明 我要買飲料!店主 我們這裡有三種飲料,礦泉水1.5元一瓶,可樂2元一瓶,橙汁3.5元一瓶。小明 好的,給我一瓶礦泉水。說完他掏出一張n元的大鈔遞給店主。小明 小明環顧四周,就...
坑爹的if語句
前兩天的時候,自己在修改 的時候,自己感覺對除錯比較有心得體會了。但遇到乙個問題,總在乙個函式中返回了false,明明條件就是不應該返回。修改前的示例 如下 string topic topic is not empty if topic.empty return false 我想對這行 加乙個日誌...
坑爹的javascript快取
開發圖書管理專案,結果使用jqury的ajax函式老是出狀況,要麼返回值為null,要麼根本就沒有呼叫servlet方法,甚至有時候連引數都沒有傳遞過去。除錯了快乙個小時,時好時壞的,簡直頭都要大了。後來用firefox的檢視原始碼才發現js 居然和ide中的不一致!我靠,明明已經禁止了瀏覽器快取,...