婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 使用Python解決Windows文件名非用反斜杠問題(python 小技巧)

使用Python解決Windows文件名非用反斜杠問題(python 小技巧)

熱門標簽:揭陽電腦外呼系統公司 承德地圖標注公司收費 銀川語音外呼系統中心 suitecrm 地圖標注 鶴壁外呼系統公司 外呼系統號顯示星號怎么看 華創e路航彩票銷售點地圖標注 高德地圖標注常顯 臨沂ai電銷機器人招商

 

在編程過程中,我們往往會遇到一個小麻煩——微軟 Windows 系統在文件夾名之間使用反斜杠字符,而幾乎所有其它的計算機(操作系統)都使用正斜杠:

Windows filenames: 
C:\some_folder\some_file.txt 
Most other operating systems: 
/some_folder/some_file.txt 

這是由于上世紀 80 年代早期計算機歷史上的一個小意外?!窶S-DOS」的第一版使用了正斜杠字符來指定命令行選項。當微軟在「MS-DOS 2.0」中加入了對文件夾的支持時,正斜杠字符已經被使用了,所以他們采用了反斜杠作為替代。35 年后,我們仍然被受困于這種不一致性。

如果你想讓你的 Python 代碼同時在 Windows 和 Mac/Linux 上工作,你就需要處理這種與平臺相關的問題。幸運的是,Python 3 有一個名為「pathlib」的新模塊,使得用戶處理文件幾乎沒有任何困難。

「pathlib」模塊鏈接: https://docs.python.org/3/library/pathlib.html

讓我們快速瀏覽一下處理文件名路徑的不同方法,看看「pathlib」如何能讓你的生活變得更美好!

錯誤的解決方案:手動構建文件路徑

假設你有一個數據文件夾,該文件夾包含你想要在你的 Python 程序中打開的文件:

 

在 Python 中對其進行編碼是「錯誤」的方式:

data_folder = "source_data/text_files/" 
file_to_open = data_folder + "raw_data.txt" 
f = open(file_to_open) 
print(f.read()) 

請注意,由于我使用的是 Mac 系統,所以我使用了「Unix」風格的正斜杠對路徑進行了硬編碼。這也會讓 Windows 的用戶感到憤怒。

從技術上講,這段代碼在 Windows 上仍然有效,因為 Python 有一個「黑客」(hack)技術:當你在 Windows 上調用「open()」函數時,它會識別這兩種斜線。但即便如此,你也不應該依賴它。如果你在錯誤的操作系統上使用了錯誤類型的斜杠(尤其是在它們與外部程序或代碼庫交互時),并不是所有的 Python 庫都會正常工作。

Python 對混合斜杠類型的支持是一種只針對 Windows 的「黑客」技術,它反過來并不起作用。在 Mac 系統環境下,在代碼中使用反斜杠會導致徹底失敗:

data_folder = "source_data\\text_files\\" 
file_to_open = data_folder + "raw_data.txt" 
f = open(file_to_open) 
print(f.read()) 
# On a Mac, this code will throw an exception: 
# FileNotFoundError: [Errno 2] No such file or directory: 'source_data\\text_files\\raw_data.txt' 

由于所有這些原因以及其他原因,使用硬編碼的路徑字符串編寫代碼,是一種會讓其他程序員十分「嫌棄」的做法。一般來說,你應該盡量避免這么做。

以前的解決方案:Python 的「os.path」模塊

Python 的「os.path」模塊有很多工具來處理這類針對特定操作系統的文件系統問題。

你可以使用「os.path.join()」為當前的操作系統構建一個使用正確類型斜杠的路徑字符串:

import os.path 
data_folder = os.path.join("source_data", "text_files") 
file_to_open = os.path.join(data_folder, "raw_data.txt") 
f = open(file_to_open) 
print(f.read()) 

這段代碼可以同時在「Windows」或「Mac」系統上完美運行。問題是它使用起來很麻煩。寫出「os.path.join()」并將路徑的每個部分作為獨立的字符串傳給該函數非常冗長,而且很不直觀。

由于「os.path」模塊中的大多數函數使用起來很煩人,開發者們通常會「忘記」使用它們,即使他們知道這樣做更好。這導致出現了很多跨平臺的 Bug,也引起了用戶的憤怒。

更好的解決方案:Python 3 的「pathlib」!

為了處理文件和路徑,Python 3.4 引入了一個名為「pathlib」的新標準庫,而且非常好用!

要使用該庫,你只需使用正斜杠將一個路徑或文件名傳給一個新的「Path()」對象,然后它將處理余下的操作:

from pathlib import Path 
data_folder = Path("source_data/text_files/") 
file_to_open = data_folder / "raw_data.txt" 
f = open(file_to_open) 
print(f.read()) 

在這里,有兩點需要注意:

  •  你應該在使用「pathlib」函數的情況下使用正斜杠?!窹ath()」函數將會把正斜杠轉化為適應當前操作系統環境的正確斜杠。贊!
  •  如果你想要在路徑上進行添加,你可以直接在你的代碼中使用「/」操作符。你再也不用一遍又一遍地輸入「os.path.join(a, b)」了。

如果「pathlib」所做的就這么多,它也已經是對于 Python 的一個很好的補充了。但是,它還能做更多!

例如,我們可以在無需打開和關閉文件的情況下,讀取文本文件的內容:

from pathlib import Path 
data_folder = Path("source_data/text_files/") 
file_to_open = data_folder / "raw_data.txt" 
print(file_to_open.read_text()) 

專業提示:之前的示例是有 Bug 的,因為打開的文件從來沒有被關閉過。而這里的這種語法則徹底避免了這個 Bug。

事實上,「pathlib」使大多數標準的文件操作變得快速而簡單:

from pathlib import Path 
filename = Path("source_data/text_files/raw_data.txt") 
print(filename.name) 
# prints "raw_data.txt" 
print(filename.suffix) 
# prints "txt" 
print(filename.stem) 
# prints "raw_data" 
if not filename.exists(): 
 print("Oops, file doesn't exist!") 
else: 
 print("Yay, the file exists!") 

  

你甚至可以使用「pathlib」顯式地將一個「Unix」路徑轉化為一個「Windows」格式的路徑:

from pathlib import Path, PureWindowsPath 
filename = Path("source_data/text_files/raw_data.txt") 
# Convert path to Windows format 
path_on_windows = PureWindowsPath(filename) 
print(path_on_windows) 
# prints "source_data\text_files\raw_data.txt" 

如果你真的想安全地在你的代碼中使用反斜杠,你可以按照「Windows」格式聲明你的路徑,而「pathlib」可以對其進行轉化,使其能在當前的操作系統中工作:

from pathlib import Path, PureWindowsPath 
# I've explicitly declared my path as being in Windows format, so I can use forward slashes in it. 
filename = PureWindowsPath("source_data\\text_files\\raw_data.txt") 
# Convert path to the right format for the current operating system 
correct_path = Path(filename) 
print(correct_path) 
# prints "source_data/text_files/raw_data.txt" on Mac and Linux 
# prints "source_data\text_files\raw_data.txt" on Windows 

如果你想把代碼寫得更「高級」一些,你甚至可以使用「pathlib」來做諸如解析相對路徑、解析網絡共享路徑并生成

「file:// urls」之類的事。在下面的例子中,我們將僅僅使用兩行代碼,在你的 web 瀏覽器中打開一個本地文件夾:

from pathlib import Path 
import webbrowser 
filename = Path("source_data/text_files/raw_data.txt") 
webbrowser.open(filename.absolute().as_uri()) 

這只是「pathlib」的好處之一。它很好地替代了過去分散在不同 Python 模塊中與文件相關的許多不同功能。

總結

以上所述是小編給大家介紹的使用Python解決Windows文件名非用反斜杠問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

您可能感興趣的文章:
  • 用python 批量更改圖像尺寸到統一大小的方法
  • Python批量更改文件名的實現方法
  • python 獲取當前目錄下的文件目錄和文件名實例代碼詳解
  • Python實現獲取當前目錄下文件名代碼詳解
  • Python遍歷目錄并批量更換文件名和目錄名的方法
  • python批量更改目錄名/文件名的方法

標簽:萊蕪 許昌 忻州 三沙 汕尾 咸寧 七臺河 棗莊

巨人網絡通訊聲明:本文標題《使用Python解決Windows文件名非用反斜杠問題(python 小技巧)》,本文關鍵詞  使用,Python,解決,Windows,文件名,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用Python解決Windows文件名非用反斜杠問題(python 小技巧)》相關的同類信息!
  • 本頁收集關于使用Python解決Windows文件名非用反斜杠問題(python 小技巧)的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲免费色视频| 欧美日韩高清影院| 一区精品在线播放| 亚洲欧洲精品天堂一级| 国产在线视视频有精品| 国产精品一区二区久久精品爱涩| 午夜伊人狠狠久久| 蜜臀精品一区二区三区在线观看 | 欧美电影免费观看完整版| 精品久久久久香蕉网| 国产日韩欧美一区二区三区乱码 | 综合色天天鬼久久鬼色| 三级精品在线观看| 国产福利一区在线| 欧美日韩中文另类| 久久精品人人做人人综合| 中文字幕一区二区三中文字幕| 北岛玲一区二区三区四区| 91精品国产综合久久福利软件 | 国产伦精品一区二区三区免费迷 | 欧美国产欧美亚州国产日韩mv天天看完整 | 亚洲天堂精品在线观看| 色老头久久综合| 国产人久久人人人人爽| 91在线精品秘密一区二区| 欧美一个色资源| 一区二区欧美视频| 国产黄色91视频| 亚洲激情一二三区| 色噜噜久久综合| 日本亚洲最大的色成网站www| 色综合色综合色综合| 国产日产欧美精品一区二区三区| 99久久精品免费看| 日韩国产欧美在线播放| 国产欧美一二三区| 56国语精品自产拍在线观看| 亚洲福利国产精品| 欧美专区在线观看一区| 国产精品对白交换视频| 国产91精品欧美| 日韩精品一区二区三区在线| 成人动漫中文字幕| 国产精品伦一区二区三级视频| 精品制服美女久久| 欧美精品一区二区久久久| 日韩电影一二三区| 国产一区二区中文字幕| 国产日产亚洲精品系列| 日韩三级视频在线看| 色婷婷亚洲婷婷| 成人在线一区二区三区| 久久精品日韩一区二区三区| 欧美日韩大陆一区二区| 色综合一区二区| 亚洲精品网站在线观看| 国产女人aaa级久久久级| 精品国产免费视频| 精品免费日韩av| 日韩视频在线永久播放| 日韩欧美一级在线播放| 69堂国产成人免费视频| 在线观看91av| 国产精品亚洲一区二区三区妖精| 蜜桃久久久久久久| 麻豆91精品视频| 麻豆91在线看| 另类小说一区二区三区| 国产精品美日韩| 久久久久久久电影| aaa亚洲精品一二三区| 国产凹凸在线观看一区二区| 国产一区二区免费在线| 国产伦精品一区二区三区免费| 国产精品一级在线| 国产69精品久久777的优势| 懂色av噜噜一区二区三区av| 成人黄色综合网站| 在线看日韩精品电影| 欧美精品国产精品| 亚洲精品在线观看视频| 国产精品美女久久久久久| 一区二区三区在线视频观看| 调教+趴+乳夹+国产+精品| 久久精品无码一区二区三区| 中文字幕av不卡| 一区二区三区精品视频在线| 午夜亚洲国产au精品一区二区| 美女视频一区在线观看| 成人激情免费网站| 51午夜精品国产| 国产欧美视频一区二区三区| 亚洲自拍另类综合| 国产精品福利一区二区三区| 一区二区三区四区五区视频在线观看 | 亚洲欧美日韩一区二区 | 国产在线精品一区二区| 99在线热播精品免费| 欧美亚洲免费在线一区| 成人a免费在线看| 在线观看欧美黄色| 欧美成人一区二区三区片免费| 国产精品无人区| 亚洲成人av在线电影| 国产综合成人久久大片91| 99精品在线观看视频| 日韩一区二区三区免费看| 中文字幕精品三区| 日本欧美一区二区三区| 一本久久精品一区二区| 精品1区2区在线观看| 偷窥少妇高潮呻吟av久久免费| 成人久久久精品乱码一区二区三区| 欧美精品v国产精品v日韩精品| 国产精品午夜电影| 久久成人18免费观看| 欧美日本在线观看| 亚洲人123区| 成人av影院在线| 久久亚洲影视婷婷| 欧美精品一区二区三| 亚洲成人av一区| 91网页版在线| 欧美在线啊v一区| 中文在线一区二区| 国产精品亚洲一区二区三区妖精| 欧美精品aⅴ在线视频| 日韩伦理电影网| 99视频超级精品| 中文字幕在线不卡一区二区三区| 国产美女一区二区三区| 精品福利在线导航| 韩国成人福利片在线播放| 日韩精品中文字幕在线一区| 美女视频黄频大全不卡视频在线播放 | av日韩在线网站| 国产三级久久久| 粉嫩欧美一区二区三区高清影视| 久久久久久久久伊人| 国产精品伊人色| 国产日韩欧美一区二区三区综合| 国产一区999| 国产精品久久久久久久久免费相片 | 久久精品亚洲麻豆av一区二区| 美女国产一区二区三区| 欧美一级高清大全免费观看| 久久99久久久久久久久久久| 这里只有精品电影| 精品一区二区三区免费毛片爱 | 91玉足脚交白嫩脚丫在线播放| 国产欧美精品一区| 91免费国产在线观看| 亚洲制服欧美中文字幕中文字幕| 欧美日韩二区三区| 国产一区二区三区黄视频| 国产精品久久久久影院| 日本道在线观看一区二区| 香港成人在线视频| www激情久久| 色乱码一区二区三区88| 天天色综合成人网| 久久久精品国产免费观看同学| 波多野结衣中文字幕一区二区三区| 亚洲精品日韩专区silk| 9191精品国产综合久久久久久| 精品一区二区免费| 亚洲欧美另类图片小说| 欧美一区二区三区系列电影| 国产成人av电影在线| 亚洲国产aⅴ成人精品无吗| 精品久久久久久久久久久久久久久 | 国产美女视频91| 亚洲欧美二区三区| 日韩一卡二卡三卡四卡| 97精品超碰一区二区三区| 日韩影视精彩在线| 国产精品婷婷午夜在线观看| 欧美图片一区二区三区| 高清在线观看日韩| 蜜桃精品视频在线| 亚洲精品乱码久久久久久日本蜜臀| 欧美精品久久久久久久久老牛影院 | 国产精品一区二区三区99| 亚洲一卡二卡三卡四卡无卡久久| 日韩女同互慰一区二区| 色婷婷av久久久久久久| 国精品**一区二区三区在线蜜桃| 亚洲综合另类小说| 国产精品欧美久久久久无广告 | 中文字幕一区二区三区精华液 | 国产日韩欧美a| 日韩欧美在线影院| 在线免费亚洲电影| 成人福利视频在线| 国产精品亚洲视频| 国产一区二区在线观看免费| 丝袜诱惑亚洲看片| 亚洲午夜在线视频| 1024亚洲合集| 国产精品午夜在线观看|