【问题标题】:Script works in PyCharm but not in Windows Command Line脚本在 PyCharm 中有效,但在 Windows 命令行中无效
【发布时间】:2021-11-13 05:06:38
【问题描述】:

破坏它的代码行:

frames = [Image.open(image) for image in glob.glob(f'{frame_folder}/*.jpg')]
frame_one = frames[0]
frame_one.save("X:\\Temp Photo Holder SolidScape Right\\resized\\progressRight.gif", format="GIF", append_images=frames,
               save_all=True, optimize=True, duration=33, loop=0)

抛出的异常:

File "genGif.py", line 10
frames = [Image.open(image) for image in glob.glob(f'{frame_folder}/*.jpg')]
                                                                         ^
SyntaxError: invalid syntax

我用来调用 Python 的 Java:

try {
        Runtime rt = Runtime.getRuntime();
        String new_dir = "C:\\Users\\user\\PycharmProjects\\rightProgressGifGen\\";
        rt.exec("cmd.exe /c cd \"" + new_dir + "\" & start cmd.exe /k \"python genGif.py\"");
        updateProgressRightGif();
    } catch (Exception e) {
        updateGlobalTime();
        System.out.println(e);
        tweet("Exception running emailTest().  Our time is " + globalHours + ":" + globalMinutes + ":" + globalSeconds);
    }

代码在 PyCharm 和 Idle 中有效,但在命令行中无效。只需要能够以某种方式从 Java 启动脚本。

【问题讨论】:

  • 可能是您的系统变量指向旧版本的 Python(Python 3.6 中引入了 f 字符串)
  • @Mikey,你的问题看起来想显示命令行不能 python 3 脚本,但你的 Java 可以做到。您的 Java 代码尝试使用命令行打开 python 3 脚本。它有效。我理解正确吗?

标签: java python windows pycharm


【解决方案1】:

你确定你正在运行 Python3

我在你的 exec 函数中注意到你写了 'python genGif.py'

在某些系统上,我必须指定版本,例如'python3 genGif.py'

你会得到一个错误的 f 字符串是有道理的,因为它们直到 python3 才被实现

【讨论】:

    【解决方案2】:

    在多操作系统环境中使用字符串连接而不是os.path.join 是一个坏习惯。试试看:

    frames = [Image.open(image) for image in glob.glob(os.path.join(frame_folder, '*.jpg')]
    

    【讨论】:

    • Traceback(最近一次调用最后一次):文件“C:\Users\user\PycharmProjects\rightProgressGifGen\genGif.py”,第 44 行,在 make_gif("X:\\Temp Photo Holder SolidScape Right\\resized") 文件“C:\Users\user\PycharmProjects\rightProgressGifGen\genGif.py”,第 11 行,make_gif 帧 = [Image.open(image) for image in glob.glob(os.path .join(frame_folder), '*.jpg')] TypeError: glob() 接受 1 个位置参数,但给出了 2 个
    • 回溯(最近一次调用最后):frames = [Image.open(image) for image in glob.glob(os.path.join(frame_folder))] File "C:\Python39\lib \site-packages\PIL\Image.py", line 2968, in open fp = builtins.open(filename, "rb") PermissionError: [Errno 13] Permission denied: 'X:\\Temp Photo Holder SolidScape Right\\调整大小'
    • 获得“PermissionError”权限被拒绝
    • 另外,这只会出现在单操作系统环境中。它永远不会在 Windows 上运行。
    • 抱歉,更正了错字。我以为是多操作系统,因为我看到了/
    【解决方案3】:

    glob.glob() 的左括号后是否应该有一个“f”?

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-26
    • 2013-02-07
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 2015-08-29
    • 1970-01-01
    相关资源
    最近更新 更多