簡體   English   中英

如何使 Python Glob 模塊跨平台工作(os.path 問題)?

[英]How to make a Python Glob module work Cross-Platform (os.path issues)?

所以我有一些這樣的文件:'./Example 3/ex3A.txt'

該腳本基本上需要列出符合我傳遞給它的標准(在本例中為數字)的隨機文本文件的內容。 實際的腳本對它做了更多的事情,但這是我遇到麻煩的部分。

這在我的 linux 機器上完美運行,但我不知道如何在我同事的 windows 電腦上執行此操作。 我已經嘗試了 os.join.path 等的各種迭代,但我似乎無法讓它跨平台工作。

這是在 linux 上完美運行的腳本的標准版本:

import os
import sys
import glob
import random

script, dirnum = sys.argv

#Create list of filenames
filenames = glob.glob('./*%s/*%s*.txt' % (dirnum, dirnum))

#Open Random file from list
select_file = open(random.choice(filenames))
file_content = selct_file.read()
print(file_content)

您應該能夠使用os.path.join創建與glob一起使用的平台不可知文件路徑:

search_path = os.path.join('*%s*' % dirnum, '*%s*.txt' % dirnum)
filenames = glob.glob(search_path)

擴展@daveruinseverything 的回復,您可以選擇使用pathlib.Path和 f-strings:

from pathlib import Path
search_path = Path('./')/ f'*{dirnum}' / f'*{dirnum}*.txt'
filenames = glob.glob(str(search_path))

這同樣適用於使用/**/的遞歸搜索。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM