麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 服務器 > Win服務器 > 正文

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

2024-09-10 00:02:04
字體:
來源:轉載
供稿:網友

 

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

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

這是由于上世紀 80 年代早期計算機歷史上的一個小意外。「MS-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,也引起了用戶的憤怒。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久成人精品视频 | 久久久久久久久浪潮精品 | 日本aⅴ在线 | 午夜视频在线 | 久国久产久精永久网页 | 精精国产xxxx视频在线野外 | 中文在线观看视频 | 成人做爰高潮片免费视频韩国 | 成人在线视频播放 | 亚洲一级成人 | 黄色羞羞视频在线观看 | 婷婷久久综合九色综合色多多蜜臀 | 日韩大片在线永久观看视频网站免费 | 久久国产精品影视 | 欧美成人免费 | 二区三区在线观看 | 一级成人欧美一区在线观看 | 欧美日韩亚洲不卡 | 麻豆porn| 成人在线视频在线观看 | av免费在线网站 | 超碰人人做人人爱 | 亚洲第一页中文字幕 | 少妇一级淫片高潮流水电影 | 国产一国产精品一级毛片 | 精品国产三级a | 久久久久久久久91 | 久久99久久99精品 | 欧美成人精品 | 亚洲av一级毛片特黄大片 | 国产91片 | 91一区二区三区久久久久国产乱 | 91情侣在线偷精品国产 | 亚洲综合中文 | 久草导航 | av在线免费网 | 在线成人免费观看www | 国产三级午夜理伦三级 | 国产精品久久久久久久久久久久久久久 | 精品国产91久久久久久久妲己 | 毛片在线免费观看完整版 |