python os.walk 读取不到下载的文件夹
时间: 2023-11-08 22:13:34 浏览: 243
可能是因为你没有正确指定下载文件夹的路径。请确保你已经使用正确的路径作为 os.walk 的参数,例如:
```
import os
path = "/Users/username/Downloads"
for root, dirs, files in os.walk(path):
for file in files:
print(os.path.join(root, file))
```
在这个例子中,`path` 变量包含了正确的下载文件夹路径。如果你不确定路径,可以尝试使用 `os.getcwd()` 函数来获取当前工作目录,然后再添加相对路径或绝对路径来指定下载文件夹的位置。
相关问题
import os from bs4 import BeautifulSoup # 指定文件夹路径 folder_path = "C:/Users/test/Desktop/DIDItest" # 遍历文件夹中的所有文件 for root, dirs, files in os.walk(folder_path): for file in files: # 读取html文件 file_path = os.path.join(root, file) with open(file_path, "r", encoding="utf-8") as f: html_code = f.read() # 解析html代码 soup = BeautifulSoup(html_code, "html.parser") # 查找<body>标签内的数据 body_data = soup.find('(中发言|发送)\s(.*?)\s').get_text() print(body_data)
根据你提供的代码,你想遍历指定文件夹中的所有 HTML 文件,并解析每个文件中 `<body>` 标签内的数据。
在你的代码中,`body_data` 变量在 `for` 循环外部被打印,这会导致只打印最后一个文件的结果。如果你想要打印每个文件的结果,需要将 `print(body_data)` 语句放置在内部的 `for` 循环中。
另外,你使用了 `soup.find('(中发言|发送)\s(.*?)\s').get_text()` 来查找满足正则表达式条件的文本内容。然而,`find()` 方法接受的是一个标签名或属性名,并不支持直接传入正则表达式。如果你想使用正则表达式来查找特定的文本内容,可以使用 `find_all()` 方法结合正则表达式进行匹配。
以下是修正后的代码示例:
```python
import os
import re
from bs4 import BeautifulSoup
# 指定文件夹路径
folder_path = "C:/Users/test/Desktop/DIDItest"
# 遍历文件夹中的所有文件
for root, dirs, files in os.walk(folder_path):
for file in files:
# 读取html文件
file_path = os.path.join(root, file)
with open(file_path, "r", encoding="utf-8") as f:
html_code = f.read()
# 解析html代码
soup = BeautifulSoup(html_code, "html.parser")
# 查找<body>标签内的数据
body_data = soup.find_all(text=re.compile('(中发言|发送)\s(.*?)\s'))
# 打印每个文件的结果
for data in body_data:
print(data)
```
在上面的代码中,`re.compile('(中发言|发送)\s(.*?)\s')` 使用正则表达式来匹配符合条件的文本内容。`soup.find_all()` 返回一个包含所有匹配结果的列表,我们可以遍历列表并打印每个结果。
请注意,在使用正则表达式时,确保你的正则表达式模式与实际文本内容匹配。如果没有找到匹配的结果,`body_data` 变量将是一个空列表。
希望这可以帮助到你!如果你还有其他问题,请随时提问。
任然找不到文件夾import os # 文件名 filename = "當天log抓取.txt" # 获取当前工作目录 current_dir = r"D:\Python文檔" # 遍历当前工作目录及其子目录,查找文件 for root, dirs, files in os.walk(current_dir): if filename.encode('gbk') in files: # 如果找到了文件,打开它 with open(os.path.join(root, filename), 'r', encoding='gbk') as file: content = file.read() print(content) break else: # 如果没有找到文件,输出错误信息 print(f"Error: File '{filename}' not found.")
如果你仍然找不到文件夹,可以尝试以下几个解决办法:
1. 确认文件夹路径正确:在代码中你指定的文件夹路径是否正确,路径中的分隔符是否正确(在 Windows 中,路径分隔符应该是反斜杠 `\` 而不是正斜杠 `/`),路径中是否包含中文字符等。
2. 确认文件夹存在:在代码中你指定的文件夹路径是否存在,你可以在代码中使用 `os.path.exists()` 函数来判断文件夹是否存在,例如:
```python
import os
current_dir = r"D:\Python文檔"
if not os.path.exists(current_dir):
print(f"Error: Directory '{current_dir}' not found.")
```
3. 确认文件夹权限:你是否具有访问该文件夹的权限,你可以尝试以管理员身份运行 Python 解释器或者给该文件夹添加读写权限。
4. 确认文件夹中是否包含文件:在遍历文件夹时,如果该文件夹中不包含任何文件,则无法找到指定的文件。你可以在代码中加入一个判断,如果文件夹中没有文件,则输出错误信息,例如:
```python
import os
current_dir = r"D:\Python文檔"
for root, dirs, files in os.walk(current_dir):
if len(files) == 0:
print(f"Error: Directory '{current_dir}' contains no files.")
break
if filename.encode('gbk') in files:
# 如果找到了文件,打开它
with open(os.path.join(root, filename), 'r', encoding='gbk') as file:
content = file.read()
print(content)
break
else:
# 如果没有找到文件,输出错误信息
print(f"Error: File '{filename}' not found.")
```
通过以上几个办法,应该能够找到文件夹并读取其中的文件。
阅读全文