开发者社区 问答 正文

RPA判断一个文件是否打开,只能使用win32com吗?

RPA判断一个文件是否打开,只能使用win32com吗?

展开
收起
真的很搞笑 2023-05-25 11:33:37 158 分享 版权
来自: 阿里云RPA
2 条回答
写回答
取消 提交回答
  • 值得去的地方都没有捷径

    不一定,可以使用Python自带的os模块、subprocess模块或者pywin32库来实现检测文件是否打开。或者通过引入其他第三方库来进行文件状态检测,例如psutil库、win32process库等。

    使用os模块的代码如下所示:

    import os

    def is_file_open(file_path): try: os.rename(file_path, file_path) return False except OSError: return True 使用subprocess模块的代码如下所示:

    import subprocess

    def is_file_open(file_path): try: subprocess.check_output(['lsof', file_path]) return True except subprocess.CalledProcessError: return False 使用psutil库的代码如下所示:

    import psutil

    def is_file_open(file_path): for proc in psutil.process_iter(): try: for item in proc.open_files(): if file_path == item.path: return True except (psutil.NoSuchProcess, psutil.AccessDenied): pass return False 使用win32com库的代码如下所示:

    import win32com.client

    def is_file_open(file_path): excel = win32com.client.Dispatch("Excel.Application") try: if not os.path.exists(file_path): return False workbook = excel.Workbooks.Open(file_path, ReadOnly=True) workbook.Close(False) return False except Exception: return True finally: excel.Quit() 请注意,这些代码仅供参考,并且可能需要根据具体场景进行修改和优化。

    2023-05-25 15:36:26
    赞同 展开评论
  • 我们没有判断一个文件是否打开的组件,只要判断文件是否存在的组件,此回答整理自钉群“阿里云RPA官方群3”

    2023-05-25 14:35:52
    赞同 展开评论
问答分类:
问答地址:
收录在圈子:
+ 订阅
阿里云RPA历经8年的内部验证,覆盖了阿里巴巴大部分BU,实现了电商客服、新零售等新兴行业的渗透,并且已经完成在保险、金融、医疗保健等领域的场景深耕,联合合作伙伴具备深度定制化能力和稳定交付能力,积累了丰富的行业可行性解决方案。目前阿里云RPA能集成并运行在更高的软件层级,这就决定了它不会侵入、影响已有的软件系统。在帮助企业提升效能的过程中,保持企业已有的IT系统功能平稳、运行可靠。
还有其他疑问?
咨询AI助理