python - 通过 .bat 文件将参数传递给由“PyInstaller”转换的 .exe 文件
问题描述
通过 .bat 文件将参数传递给由 PyInstaller 转换的 .exe 文件时出现错误在我的 python 脚本中,我导入了以下库:
import time
from contextlib import closing
from PIL import Image
import subprocess
from audiotsm import phasevocoder
from audiotsm.io.wav import WavReader, WavWriter
from scipy.io import wavfile
import numpy as np
import re
import math
from shutil import copyfile, rmtree
import os
import argparse
from pytube import YouTube
import cv2
from datetime import datetime
import datetime
import os.path
import shutil
import webbrowser
这是我的 .bat 文件内容:
mode con: cols=100 lines=40
@echo off
COLOR 0A
title VideoCuts
:LOOP
if "%~1"=="" goto :END
ShortCut.exe --input_file "%~1" --silent_threshold 0.1 --silent_speed 9999999.00 --frame_margin 5 --sample_rate 48000 --frame_quality 1 --output_file "%~n1_%date:~-10,2%%date:~-7,2%%date:~-4,4%_%time:~0,2%%time:~3,2%%time:~6,2%_videocuts.mp4"
pause
我还使用这个 .bat 文件进行了测试:
ShortCut.exe --input_file="%~1" --silent_threshold=0.1 --silent_speed=9999999.00 --frame_margin=5 --sample_rate=48000 --frame_quality=1 --output_file="videocuts.mp4"
解决方案
当您创建问题的最小可重现示例时,更容易回答问题。
在 bat 脚本中执行命令的回显。例如,在您的 bat 文件中,在执行ShortCut.exe
echo "ShortCut.exe --input_file="%~1" --silent_threshold=0.1 --silent_speed=9999999.00 --frame_margin=5 --sample_rate=48000 --frame_quality=1 --output_file="videocuts.mp4""
如果使用正确的参数调用可执行文件,这将为您提供信息。根据您在 py 文件中实现它的方式,可能存在查找此输入文件并echo
在运行它之前输入命令的问题,这可能是解决它的完美方法。
正如pyinstaller文档所提到的,您还可以编写 if 条件,说明可执行文件何时被冻结(Exe 形式)以及何时从 IDE 运行
import sys
if getattr( sys, 'frozen', False ) :
# running in a exe form
else :
# running on your IDE (eg. Pycharm)
推荐阅读
- video-streaming - GStreamer 高品质屏幕录制和音频
- grpc - 为什么 gRPC 如此重视能够直接调用服务器应用程序上的方法?
- python - Python Socket 函数停止器
- swift - 何时在 Swift 中使用类型擦除?
- python - 为什么我的游戏的角色移动无法正常工作
- javascript - 会话超时对话框/模式 - 多个选项卡
- python - 是否必须在 python 中停止线程?
- lua - 从更大的数字中获取特定的数字?
- google-chrome-extension - 仅向测试人员发布新版本的 Chrome 扩展程序(最初)
- ansible - 如何使用 ansible 将目录移动到新创建的分区?