excel-检查文件是否在Python中打开

在我的应用程序中,我写入一个Excel文件。 写入后,用户可以通过打开文件来查看文件。 但是,如果用户忘记了在进一步写入之前关闭文件,则会出现警告消息。 因此,我需要一种在写入过程之前检查此文件是否打开的方法。 您可以为我提供一些python代码来完成此任务吗?

Shansal asked 2020-01-08T04:09:01Z

5个解决方案

40 votes

如果您只关心当前的过程,那么一种简单的方法是使用文件对象属性“ closed”

f = open('file.py')

if f.closed:

print 'file is closed'

这不会检测文件是否被其他进程打开!

来源:[http://docs.python.org/2.4/lib/bltin-file-objects.html]

Rmhero answered 2020-01-08T04:09:53Z

38 votes

我假设您正在写入文件,然后将其关闭(以便用户可以在Excel中打开它),然后,在重新打开该文件以进行附加/写入操作之前,您要检查文件是否仍在 在Excel中打开?

这是您应该这样做的方式:

try:

myfile = open("myfile.csv", "r+") # or "a+", whatever you need

except IOError:

print "Could not open file! Please close Excel!"

with myfile:

do_stuff()

Tim Pietzcker answered 2020-01-08T04:09:24Z

5 votes

在Windows 10上使用excel处理此特定问题时,其他提供的示例都不适合我。我能想到的唯一其他选择是尝试临时重命名文件或包含该文件的目录,然后重命名。

import os

try:

os.rename('file.xls', 'tempfile.xls')

os.rename('tempfile.xls', 'file.xls')

except OSError:

print('File is still open.')

DoubleD answered 2020-01-08T04:10:13Z

3 votes

您可以使用open(“ path”)作为文件:这样它会自动关闭,否则,如果它在另一个进程中打开,则可以尝试就像在Tims示例中一样,您应该使用IOError除外,以不忽略代码的任何其他问题:)

try:

with open("path", "r") as file:#or just open

#Code here

except IOError:

#raise error or print

thabubble answered 2020-01-08T04:10:34Z

0 votes

使用

try:

with open("path", "r") as file:#or just open

当文件由其他进程打开时(即用户手动打开文件)可能会造成一些麻烦。您可以使用win32com库解决问题。下面的代码检查是否打开了任何excel文件,并且没有一个与您特定文件的名称匹配,然后打开了一个新文件。

import win32com.client as win32

xl = win32.gencache.EnsureDispatch('Excel.Application')

my_workbook = "wb_name.xls"

xlPath="my_wb_path//" + my_workbook

if xl.Workbooks.Count > 0:

# if none of opened workbooks matches the name, openes my_workbook

if not any(i.Name == my_workbook for i in xl.Workbooks):

xl.Workbooks.Open(Filename=xlPath)

xl.Visible = True

#no workbooks found, opening

else:

xl.Workbooks.Open(Filename=xlPath)

xl.Visible = True

'xl.Visible = True is not necessary, used just for convenience'

希望这会有所帮助

jabba answered 2020-01-08T04:11:04Z

python 打开excel并在屏幕上呈现_excel-检查文件是否在Python中打开相关推荐

  1. python 打开excel并在屏幕上呈现_如何用Python打开Excel文件显示其内容?

    要在默认应用程序中打开文件,可以使用import os file = "C:\\Documents\\file.txt" os.startfile(file) 这将在与文件扩展名关 ...

  2. python 打开excel并在屏幕上呈现_python读取excel数据,并可视化展现

    #-*- coding: utf-8 -*- importpandas as pdaimportmatplotlib.pyplot as pylimportmatplotlib.font_manage ...

  3. python基础编程:Python实现鼠标自动在屏幕上随机移动功能

    这篇文章主要介绍了Python实现鼠标自动在屏幕上随机移动功能,具有很好的参考价值,希望对大家有所帮助.还等什么?一起跟随小编过来看看吧 本来想控制鼠标自动移动防止公司电脑自动休眠的策略,然而,实现了 ...

  4. Python实现向s3共享存储上传和下载文件

    Python实现向s3共享存储上传和下载文件 https://www.cnblogs.com/liang545621/p/10298617.html 使用Python从S3上传和下载文件 https: ...

  5. 操作无法完成因为文件已在syayem中打开怎么处理删除文件。

    情况一:如果是在Win10系统下(尤其是想要删除镜像文件时),删除文件时出现"操作无法完成,因为文件已在system中打开 "这样的情况是.此时需要打开"计算机" ...

  6. 操作无法完成,因为该文件已在system中打开

    一 .操作无法完成,因为该文件已在system中打开 1 同时按下键盘上的Ctrl+Shift+ESC组合键,打开"任务管理器", 2 切换到"性能"选项卡下, ...

  7. 如何检查文件是否是python中的目录或常规文件? [重复]

    本文翻译自:how to check if a file is a directory or regular file in python? [duplicate] Possible Duplicat ...

  8. 为什么matlab生成的exe文件只能在matlab中打开,在电脑的其他地方打不开?

    为什么matlab生成的exe文件只能在matlab中打开,在电脑的其他地方打不开? 2014-11-09 20:20147****3349 | 浏览 448 次  操作系统 在同一个电脑里,在mat ...

  9. 解决:利用IDEA的右上角图标打开jsp文件,在浏览器中打开的是“本机文件路径”,而不是“http路径”问题

    解决:利用IDEA的右上角图标打开jsp文件,在浏览器中打开的是"本机文件路径",而不是"http路径"问题 一·问题描述: 二·错误原因: 三·解决方法: 方 ...

最新文章

  1. 成功解决SyntaxError: import * only allowed at module level
  2. 目录遍历漏洞:入侵检测php程序中的目录遍历漏洞,目录浏览(目录遍历)漏洞
  3. java中关于IO流的知识总结(重点介绍文件流的使用)
  4. linux+geth+不能同步公链数据,以太坊(ETH)同步公链数据
  5. Fibonacci思想的灵活应用(洛谷P1011题题解,Java语言描述)
  6. H264所采用的指数格伦布熵编码算法原理及应用
  7. ddos攻击数据集_ddos攻击和cc攻击有什么区别?他们2个哪个更厉害?
  8. RHCE之DHCP配置详解
  9. 【Luogu1111】修复公路(MST模板)
  10. 手把手教你学习汇编语言——从入门到起飞
  11. 数据分析面试之——【群面面经】注意事项与技巧总结
  12. 【LeetCode刷题——数据结构篇】
  13. IPHONE黑解教程
  14. DataX及DataX-Web
  15. bm24 bm25 sql 22 sql 24
  16. 单一职责原则(SIngel Responsibility Principle  SRP)
  17. Java基础知识梳理
  18. 11道都在这儿了!2020年高考作文试题全汇总
  19. eclispe override报错的解决办法
  20. 音频拼接python

热门文章

  1. 入侵网站简单方法总结
  2. 智林STM32程序源代码的分析和整理03(转帖)
  3. LeetCode--5.最长回文子串(滑动窗口)
  4. linux 按键驱动中断 rockchip_7.自己写中断方式按键驱动程序(详解)
  5. 7-34 红色警报 (10 分)(结构体并查集)
  6. 基于Mind+的NB-IOT自动获取时间和位置
  7. spring boot实现WebMvcConfigurer接口定制SpringMvc配置
  8. c# mysql存储过程 输出参数值_MySQL 存储过程参数用法 in, out, inout
  9. java insert_java获取新insert数据自增id的实现方法
  10. 景霄讲解Python部分内部实现