【问题标题】:Python | Too many levels of symbolic links蟒蛇 |太多级别的符号链接
【发布时间】:2020-03-16 17:23:11
【问题描述】:

通过 GCP shell 运行以下脚本:

def unpack_model(model_path, uploaded_filename):
    """ unpack uploaded zip/rar file """
    name, file_type = os.path.splitext(uploaded_filename)
    filename = "model{}".format(file_type)
    os.rename(os.path.join(model_path, uploaded_filename),
              os.path.join(model_path, filename))
    Archive(os.path.join(model_path, filename)).extractall(model_path)
    os.remove(os.path.join(model_path, filename))
    if 'main.py' not in os.scandir(model_path):
        copydata(os.path.join(model_path, name), model_path)
        shutil.rmtree(os.path.join(model_path, name))

我得到以下错误:

if 'main.py' not in os.scandir(model_path):
[Errno 40] Too many levels of symbolic links: '/app/data/u200315145936ca6bbd1163d/model/m200315153650d8f7069fc0b/model'

我试过 os.listdir() 给了我同样的错误。当脚本在我的本地计算机上运行时,一切正常。

有人可以帮忙解决这个问题吗?

【问题讨论】:

    标签: python operating-system scandir google-cloud-shell listdir


    【解决方案1】:

    您可以通过 follow_symlinks=False 忽略符号 示例:

    def get_directory_size(self, directory):
        total_size = 0
        for entry in os.scandir(directory):
           if entry.is_file():
              total_size += entry.stat(follow_symlinks=False).st_size
           elif entry.is_dir(follow_symlinks=False):
              total_size += get_directory_size(entry.path)
        return total_size
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-26
      • 2015-07-14
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      相关资源
      最近更新 更多