锁定文件.

我有一个文件,需要一些不同的运行脚本才能访问. 很可能这不是问题,但是如果是,我需要做什么 为了确保脚本不会因为使用输入文件而不会崩溃? 最好像以下内容一样运行循环: 标志= 0 虽然不标记: 尝试: 打开(文件,'r').read() 标志= 1 除了: 经过 这似乎在纸上看起来不错,但我不想跑一会儿 不确定的时间. 还有其他可以做的吗 那会更好吗? 谢谢, 哈林·塞里特

# 回答1

哈林·塞里特(Harlin Seritt)写道: 在POSIX系统上,有一个FCNTL模块[1]可以有用. [1] http://python.org/doc/2.4.1/lib/module-fcntl.html(_@_ _) 哈林·塞里特(Harlin Seritt)在2005年9月17日星期六23:58:58 -0700写道: 而不是随身符号,请使用循环. 这样,当您尝试过 未成功的一些已知次数,您可以向用户报告 您尝试并失败了. 另外,在任何严肃的程序中,您都应该给予更好的错误报告 以上,尤其是与文件相关的错误. 裸露的"除:" 捕获所有错误通常是不好的做法. 例如,假设你打算 写"打开(文件名,'r'). 反而. 您的除外条款会遇到错误,您将花费 尝试弄清楚为什么无法打开文件的时间. 尝试这样的事情: 导入errno def get_file(fname,max_tries = 10): """"返回fname的内容,或者如果有错误,则无需返回. 对于我的范围(max_tries): 尝试: fp = open(fname,'r') text = fp.read() fp.close()#不要等待Python为您关闭它 返回文字 除了ioError,(错误,消息): 如果错误== errno.enoent: 打印"没有这样的文件.您是否在沙发后面看?" 休息 elif错误== errno.eio: 打印" I/O错误 - 不良媒体,没有饼干!" 休息 Elif错误(Errno.eperm,errno.ecces): 打印"拒绝许可.去你的房间!" 休息 elif错误== errno.eintr: 打印"呼叫间隔...再试一次." 继续 Elif错误(errno.ewouldblock,errno.eagain): 打印"临时错误..." \ "请等待几秒钟,然后重试." 继续 别的: #其他错误,只需打印Python的消息即可. 打印消息 别的: #仅当您不断裂时打来电话 打印"对不起,文件正在使用.请稍后再试." 没有返回 您应该查看模块errno,以及功能 os.strerror(),有关更多详细信息. 当然,许多人不必担心 给出自己对ioErrors的解释,然后简单地返回相同的解释 Python遇到的错误. 这两个页面也可能很有用:http://www.gnu.org/software/libc/man...ror-codes.html http://www.gnu.org.org/software/libc/libc/man.....ile...ile..ile -locks.html - - 史蒂文.

标签: python

添加新评论