我遇到了一个令人困惑的问题。我只是试图从colab表单中获取一个文件夹位置,并将其中的所有mp4视频组合成一个视频。然而,我似乎无法通过变量提供此文件夹位置。当硬编码时,它工作得非常好。我在这里做错了什么?
这段代码不起作用,因为cd命令不知何故不起作用。
Location = "drive/MyDrive/MyFolder/" #@param {type:"string"}
!cd $Location; for f in *.mp4; do echo "file $f" >> videos.txt; done; sort --version-sort -o video.txt videos.txt; ffmpeg -f concat -i video.txt -c copy output.mp4; rm video.txt videos.txt
然而,当我硬编码位置而不是$Location变量时,它工作起来没有任何问题。
Location = "drive/MyDrive/MyFolder/" #@param {type:"string"}
!cd "drive/MyDrive/MyFolder/"; for f in *.mp4; do echo "file $f" >> videos.txt; done; sort --version-sort -o video.txt videos.txt; ffmpeg -f concat -i video.txt -c copy output.mp4; rm video.txt videos.txt
有人能告诉我为什么前面的命令不起作用吗?这是如此令人沮丧,因为在使用$location时,其他所有shell命令都能正常工作。只有cd命令似乎不起作用。这是colab特有的问题吗?
P.S.必须在一行中执行,因为所有其他命令都在该文件夹中执行,所以它取决于正在更改的文件夹。
我尝试将变量用{Location}代替$Location,但没有任何区别。所提出的问题无关紧要,因为我不想更改单元格的整个目录。我只想转到该位置并将视频串接,然后返回到通常的目录。
1条答案
按热度按时间gr8qqesn1#
我不知道cd命令,但如果你右键单击,你可以创建一个文件夹,并把你的文件在使用文件标签。