手术室步行()找不到我的文件名

2024-05-29 05:57:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用python脚本在一个循环中编辑一个包含.html文件的大目录。我无法循环使用手术室步行(). 这段代码只是将html文件转换成可以使用的字符串,但是脚本甚至没有进入循环,好像文件不存在一样。基本上,它打印point1,但从未到达{}。脚本结束时没有错误消息。这个目录被设置在名为“amazon”的文件夹中,其中有一个级别的20个子文件夹,每个子文件夹中都有20个html文件。在

奇怪的是,这段代码在一个只包含.txt文件的相邻目录上运行得很好,但是由于某种原因它似乎没有抓取我的.html文件。关于for root, dirs, filenames in os.walk()循环的结构,有什么我不明白的吗?这是我第一次使用手术室步行,我也查看了这个网站上的其他一些页面,试图让它发挥作用。在

import os

rootdir = 'C:\filepath\amazon'
print "point1"
for root, dirs, filenames in os.walk(rootdir):
    print "point2"
    for file in filenames:
        with open (os.path.join(root, file), 'r') as myfile:
             g = myfile.read()
        print g

任何帮助都是非常感谢的。在


Tags: 文件代码in目录脚本文件夹foros
3条回答

你的问题是你在路径中使用了反斜杠:

>>> rootdir = 'C:\filepath\amazon'
>>> rootdir
'C:\x0cilepath\x07mazon'
>>> print(rootdir)
C:
  ilepathmazon

因为Python字符串使用反斜杠来转义特殊字符,因此在rootdir中,\f表示ASCII Form Feed字符,\a表示ASCIIBell字符。在

您可以使用原始字符串(注意撇号前的r)来避免这种情况:

^{pr2}$

。。。或者只使用常规斜杠,在Windows上是work fine

>>> rootdir = 'C:/filepath/amazon'
>>> rootdir
'C:/filepath/amazon'
>>> print(rootdir)
C:/filepath/amazon

正如Huu-Nguyen指出的,在可能的情况下使用^{}构造路径被认为是一个好的实践。。。这样你就完全避免了这个问题:

>>> rootdir = os.path.join('C:', 'filepath', 'amazon')
>>> rootdir
'C:\\filepath\\amazon'  # presumably ... I don't use Windows.
>>> print(rootdir)
C:\filepath\amazon

通过使用os.path.join,您可以避免显式地处理任何类型的斜杠:

rootdir = os.path.join('C:', 'filepath', 'amazon')

反斜杠用作转义符。或者加倍,或者使用“原始字符串”加上前缀“r”。在

示例:

>>> 'C:\filepath\amazon'
'C:\x0cilepath\x07mazon'
>>> r'\x'
'\\x'
>>> '\x'
ValueError: invalid \x escape

说明:In Python, what does preceding a string literal with “r” mean?

相关问题 更多 >

    热门问题