小孩一枚 2023-10-14 18:17 采纳率: 20%
浏览 15
已结题

Python psutil SystemError

最近想用Python的psutil获取磁盘信息(disk_usage),但是获取时报了很奇怪的错误。
我的源代码:

#我的系统是Windows 11,psutil是5.9.5

import psutil

disk_partitions = psutil.disk_partitions()
for partition in disk_partitions:
    disk_usage = psutil.disk_usage(partition.mountpoint)
    print("磁盘容量和使用情况 - {}: {}".format(partition.device, disk_usage))

错误信息:

Traceback (most recent call last):
  File "D:\Program Files\Python311\hhh.py", line 5, in <module>
    disk_usage = psutil.disk_usage(partition.mountpoint)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python312\Lib\site-packages\psutil\__init__.py", line 2005, in disk_usage
    return _psplatform.disk_usage(path)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python312\Lib\site-packages\psutil\_pswindows.py", line 280, in disk_usage
    total, free = cext.disk_usage(path)
SystemError: argument 1 (impossible<bad format char>)

网上搜不到,谁能帮我解决一下,谢谢

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-10-15 15:39
    关注

    引自强大而免费的微信小程序:皆我百晓生


    根据您提供的信息,这个错误通常是由于磁盘路径中包含特殊字符或格式不正确导致的。您可以尝试以下解决方法:

    1. 确保您传递给psutil.disk_usage函数的磁盘路径符合Windows系统的要求。磁盘路径应该是一个有效的绝对路径,比如"C:\"。
      如果您在循环disk_partitions时遇到了无效的磁盘路径,您可以尝试打印partition.mountpoint来查看问题所在。

    2. 如果磁盘路径中包含特殊字符(如空格、中文字符等),尝试对路径进行编码。可以使用urllib.parse.quote函数对路径进行编码,例如:
      ```
      import urllib.parse

    disk_usage = psutil.disk_usage(urllib.parse.quote(partition.mountpoint))

    ```
    这样可以确保路径被正确地传递给psutil.disk_usage函数。

    如果上述方法仍无法解决问题,建议您检查所使用的psutil版本是否与您的Python版本兼容。您可以尝试升级psutil至最新版本,或者降低Python版本的使用。

    如果问题仍然存在,您可以尝试在psutil的GitHub仓库上报告问题,同时提供完整的错误堆栈跟踪和相关环境信息,以获取更多的帮助。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月2日
  • 创建了问题 10月14日

悬赏问题

  • ¥15 爬虫爬取网站的一些信息
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含
  • ¥15 麒麟V10桌面版SP1如何配置bonding
  • ¥15 Marscode IDE 如何预览新建的 HTML 文件
  • ¥15 K8S部署二进制集群过程中calico一直报错