我正在编写一个脚本来解析多个日志文件并维护已处理文件的列表。当我阅读要处理的文件列表时,我使用os.walk
并获得类似于以下内容的名称:
C:/Users/Python/Documents/Logs\ServerUI04\SystemOut_13.01.01_20.22.25.log
这是由以下代码创建的:
filesToProcess.extend(os.path.join(root, filename) for filename in filenames if logFilePatternMatch.match(filename))
似乎“root”使用正斜杠作为分隔符(我在 Windows 上并发现更方便),但“文件名”使用反斜杠,所以我最终得到的文件路径不一致,因为它包含正斜杠和反斜杠的混合作为分隔符。
我尝试使用以下方法设置分隔符:
os.path.sep = "/"
和
os.sep = "/"
在 .join 之前,但它似乎没有任何效果。我意识到理论上我可以操纵字符串,但从长远来看,我希望我的脚本能够在 Unix 和 Windows 上运行,所以如果可能的话,我希望它是动态的。
我错过了什么吗?
更新:
根据下面的有用回复,我的问题似乎是自己造成的,为方便起见,我设置了用作 root 的初始路径,如下所示:
logFileFolder = ['C:/Users/Python/Documents/Logs']
当我将其更改为:
logFileFolder = ['C:\\Users\\Python\\Documents\\Logs']
一切正常,我生成的文件路径全部使用“\”。看起来我的方法是错误的,因为我试图让 Python 改变行为而不是纠正我设置的值。
谢谢!