關於坑爹的windows路徑以及 處理相關

2021-08-20 14:50:07 字數 1605 閱讀 8658

在寫指令碼自動處理歸檔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中的不一致!我靠,明明已經禁止了瀏覽器快取,...