NAUTILUS_SCRIPT_SELECTED_FILE_PATHS 的大小有限制吗?

NAUTILUS_SCRIPT_SELECTED_FILE_PATHS 的大小有限制吗?

我在使用为 Nautilus 编写的 Python 脚本时遇到了一些奇怪的行为。

它位置优越,+Xed 并且可以很好地与“小文件列表”(大约 1000 个)配合使用。

当我选择超过一定数量的文件时,脚本不会启动,就好像通过 NAUTILUS_SCRIPT_SELECTED_FILE_PATHS 传递给我的脚本的列表大小受到限制一样。

当文件数量超过一定数量时,脚本将不再启动。

NAUTILUS_SCRIPT_SELECTED_FILE_PATHS 是否有已知的大小限制?

提前感谢任何建议!

上下文:该脚本按照图片日期对我的家庭照片进行排序,子目录为 [YYYY-MM] 样式。因为要发送的图片超过 100,000 张,所以我发现用脚本来完成这项工作很有必要。

我使用 Tk 进行了一些奇怪的操作来跟进进度。请温柔一点,我是个初学者 ;-)

这是我写的脚本:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys, os, datetime

import tkinter as tk

def main(args):

    # tk related
    global text, fen
    def ecrire(texte):
        text.insert(tk.INSERT, texte + "\n")
        text.see('end')
        fen.update_idletasks()

    fen = tk.Tk()
    fen.geometry("600x350")
    fen.title("Process monitor")

    # zone de texte dans la fenêtre
    text = tk.Text(fen, height=20, width=80)
    text.pack()

    for path in os.getenv('NAUTILUS_SCRIPT_SELECTED_FILE_PATHS','').splitlines():
        ecrire(path)

        # get file modification date as datetime object
        fstamp = os.path.getmtime(path)
        fdate = datetime.datetime.fromtimestamp(fstamp)
        ddir = fdate.strftime("[%Y-%m]")

        basedir = os.path.dirname(path)
        destdir =os.path.join(basedir, ddir)

        destpath = os.path.join(destdir, os.path.basename(path))

        # ensure destdir exists and handle duplicates
        os.makedirs(destdir, exist_ok=True)

        i=0
        while os.path.exists(destpath):
            x1, x2 = os.path.splitext(destpath)
            i += 1
            destpath = x1 + "_(" + str(i) + ")" + x2

        os.rename(path, destpath)
        ecrire(" -> " + destpath)

        ecrire("\nClose window [X] to terminate")

    fen.mainloop()

    return 0

if __name__ == "__main__":
    sys.exit(main(sys.argv))

答案1

这不是一个记录的限制,但由于NAUTILUS_SCRIPT_SELECTED_FILE_PATHS是一个环境变量,其内容将受到系统中分配的用于存储环境变量的最大大小的限制。

相关内容