自动执行我在 python 命令后插入的路径
Automate paths that I insert after command in python
我想用 moviepy
模块制作一个简单的 gif 到 mp4 转换器。问题是每次我必须转换不同的文件时,我必须打开 convert.py
文件并在
中编辑路径
clip = mp.VideoFileClip(path/to/.gif)
我想做类似这样的东西:
./convert.py /home/user/Desktop/file.gif
这样我就可以直接通过终端指定路径而无需更改 python 可执行文件,有什么想法吗?谢谢。
编辑:
这是终端输出和我的脚本
终端机:
./convert.py /home/xinto/Desktop/vanced_9_1.gif
pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
File "./convert.py", line 10, in <module>
clip = mp.VideoFileClip('fn')
File "/home/xinto/.local/lib/python3.7/site-packages/moviepy/video/io/VideoFileClip.py", line 91, in __init__
fps_source=fps_source)
File "/home/xinto/.local/lib/python3.7/site-packages/moviepy/video/io/ffmpeg_reader.py", line 33, in __init__
fps_source)
File "/home/xinto/.local/lib/python3.7/site-packages/moviepy/video/io/ffmpeg_reader.py", line 276, in ffmpeg_parse_infos
"path.")%filename)
OSError: MoviePy error: the file fn could not be found!
Please check that you entered the correct path
这是我的脚本:
#!/usr/bin/python3.7
import moviepy.editor as mp
import os.path
import os
import sys
fn = sys.argv
clip = mp.VideoFileClip('fn')
clip.write_videofile("export.mp4")
您好,感谢您第一次 post 来到社区。我想首先让您知道我不是 Python 程序员,但如果我正确理解问题,您很可能也不是。
这很好。
一点点 google-foo 把我带到了那里:
此 Web 资源处理 python sys.argv 以实现我认为您所要求的。我当然相信这可以相当快速和轻松地解决您的问题。
祝你一切顺利,让我们知道你的管理方式。另外,请记住,假设您理解给定的信息,在互联网上快速搜索将帮助您学习和进步
谢谢
编辑:
下面的代码将显示传递给程序的参数
#!/usr/bin/env python
import sys
for x in sys.argv:
print ("Argument: ", x);
以下代码将确保至少有一个参数被传递给程序。
#!/usr/bin/env python
import sys
if len (sys.argv) != 2 :
print ("Usage: ", str(sys.argv[0]));
sys.exit (1)
print ("Passed argument: ", str(sys.argv[1]));
此代码最终将设置变量 'clip' 并打印它
#!/usr/bin/env python
import sys
if len (sys.argv) != 2 :
print ("Usage: ", str(sys.argv[0]), "[FILEPATH]");
sys.exit (1)
clip = str(sys.argv[1]) + '.gif';
print ("Clip is: ", clip);
当然,你应该实现文件验证来检查文件是否存在...
了解 sys.argv 的基础知识后,您可以查看其他资源,例如 More fun with sys.argv
--- 更多编辑 ---
看了你最后的评论,说模块不允许变量...我忍不住写了一些代码来验证,因为这是不正常的。这是我想出的,请记住我不是 Python 程序员。
#!/usr/bin/env python
import moviepy.editor as mp
import sys
if len (sys.argv) != 3 :
print ("Usage:", str(sys.argv[0]), "[GIF FILEPATH] [OUTPUT MP4]");
sys.exit (1)
gifFILE = str(sys.argv[1]);
outMP4 = str(sys.argv[2]);
print ("GIF filepath:", gifFILE);
print ("MP4 output:", outMP4);
clip = mp.VideoFileClip(gifFILE);
clip.write_videofile(outMP4);
这导致从 2mb 的原始 gif 输入完美输出 mp4 文件。
额外:
如果您只想从 gif 文件创建 mp4,一个简单的 FFMpeg 命令就可以了。
ffmpeg -i INPUT.gif -movflags +faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" OUTPUT.mp4
我想用 moviepy
模块制作一个简单的 gif 到 mp4 转换器。问题是每次我必须转换不同的文件时,我必须打开 convert.py
文件并在
clip = mp.VideoFileClip(path/to/.gif)
我想做类似这样的东西:
./convert.py /home/user/Desktop/file.gif
这样我就可以直接通过终端指定路径而无需更改 python 可执行文件,有什么想法吗?谢谢。
编辑:
这是终端输出和我的脚本
终端机:
./convert.py /home/xinto/Desktop/vanced_9_1.gif
pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
File "./convert.py", line 10, in <module>
clip = mp.VideoFileClip('fn')
File "/home/xinto/.local/lib/python3.7/site-packages/moviepy/video/io/VideoFileClip.py", line 91, in __init__
fps_source=fps_source)
File "/home/xinto/.local/lib/python3.7/site-packages/moviepy/video/io/ffmpeg_reader.py", line 33, in __init__
fps_source)
File "/home/xinto/.local/lib/python3.7/site-packages/moviepy/video/io/ffmpeg_reader.py", line 276, in ffmpeg_parse_infos
"path.")%filename)
OSError: MoviePy error: the file fn could not be found!
Please check that you entered the correct path
这是我的脚本:
#!/usr/bin/python3.7
import moviepy.editor as mp
import os.path
import os
import sys
fn = sys.argv
clip = mp.VideoFileClip('fn')
clip.write_videofile("export.mp4")
您好,感谢您第一次 post 来到社区。我想首先让您知道我不是 Python 程序员,但如果我正确理解问题,您很可能也不是。
这很好。
一点点 google-foo 把我带到了那里:
此 Web 资源处理 python sys.argv 以实现我认为您所要求的。我当然相信这可以相当快速和轻松地解决您的问题。
祝你一切顺利,让我们知道你的管理方式。另外,请记住,假设您理解给定的信息,在互联网上快速搜索将帮助您学习和进步
谢谢
编辑:
下面的代码将显示传递给程序的参数
#!/usr/bin/env python
import sys
for x in sys.argv:
print ("Argument: ", x);
以下代码将确保至少有一个参数被传递给程序。
#!/usr/bin/env python
import sys
if len (sys.argv) != 2 :
print ("Usage: ", str(sys.argv[0]));
sys.exit (1)
print ("Passed argument: ", str(sys.argv[1]));
此代码最终将设置变量 'clip' 并打印它
#!/usr/bin/env python
import sys
if len (sys.argv) != 2 :
print ("Usage: ", str(sys.argv[0]), "[FILEPATH]");
sys.exit (1)
clip = str(sys.argv[1]) + '.gif';
print ("Clip is: ", clip);
当然,你应该实现文件验证来检查文件是否存在...
了解 sys.argv 的基础知识后,您可以查看其他资源,例如 More fun with sys.argv
--- 更多编辑 ---
看了你最后的评论,说模块不允许变量...我忍不住写了一些代码来验证,因为这是不正常的。这是我想出的,请记住我不是 Python 程序员。
#!/usr/bin/env python
import moviepy.editor as mp
import sys
if len (sys.argv) != 3 :
print ("Usage:", str(sys.argv[0]), "[GIF FILEPATH] [OUTPUT MP4]");
sys.exit (1)
gifFILE = str(sys.argv[1]);
outMP4 = str(sys.argv[2]);
print ("GIF filepath:", gifFILE);
print ("MP4 output:", outMP4);
clip = mp.VideoFileClip(gifFILE);
clip.write_videofile(outMP4);
这导致从 2mb 的原始 gif 输入完美输出 mp4 文件。
额外:
如果您只想从 gif 文件创建 mp4,一个简单的 FFMpeg 命令就可以了。
ffmpeg -i INPUT.gif -movflags +faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" OUTPUT.mp4