【问题标题】:file.tell() doesn't update file size info for samba filesfile.tell() 不会更新 samba 文件的文件大小信息
【发布时间】:2019-07-12 09:21:55
【问题描述】:

文件大小参数停止使用 python 的tell() 方法更新与 samba 共享的文件。

我创建了一个示例来重现此问题。 tell() - 始终显示相同的大小 而os.stat不断更新值

import time
import os

fname = "SAMBA_FILE_PATH"
with open(fname, 'r') as file_handler:
    while 1:
        file_handler.seek(0, 2)
        file_size = file_handler.tell()
        print file_size
        print os.stat(fname).st_size
        time.sleep(2)```

【问题讨论】:

  • 似乎不是Python本身的问题,而是操作系统或samba行为/配置中的问题...我有一个安装了samba的Ubuntu18.04节点和Win 2008R2,我尝试访问此共享从。我注意到从 Win 机器访问时,位于共享文件夹中的文件没有被更新。在我将 smth 附加到文件后它没有被更新(但是当我覆盖文件时 - 它已成功更新)

标签: python python-2.7 samba


【解决方案1】:

我在这里使用了readline() 而不是seek()

import time
import os

fname = "SAMBA_FILE_PATH"
with open(fname, 'r') as file_handler:
    while 1:
        file_handler.readline()
        file_size = file_handler.tell()
        print file_size
        print os.stat(fname).st_size
        time.sleep(2)

【讨论】:

  • readline 在我的情况下不是一个选项。并没有解决问题
【解决方案2】:

修正了通过添加修改 samba 配置 oplocks = False

取自here

【讨论】:

    猜你喜欢
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    相关资源
    最近更新 更多