0

そこで、Coursera から「コンピュータ ネットワーク入門」コースの mp4 ファイルと srt ファイルをダウンロードしました。ただし、mp4 ファイルと srt ファイルの名前には若干の違いがあります。

ファイル名のサンプルは次のとおりです。

1 - 1 - 1-1 Goals and Motivation (1253).mp4
1 - 1 - 1-1 Goals and Motivation (12_53).srt
1 - 2 - 1-2 Uses of Networks (1316).mp4
1 - 2 - 1-2 Uses of Networks (13_16).srt
1 - 3 - 1-3 Network Components (1330).mp4
1 - 3 - 1-3 Network Components (13_30).srt
1 - 4 - 1-4 Sockets (1407).mp4
1 - 4 - 1-4 Sockets (14_07).srt
1 - 5 - 1-5 Traceroute (0736).mp4
1 - 5 - 1-5 Traceroute (07_36).srt
1 - 6 - 1-6 Protocol Layers (2225).mp4
1 - 6 - 1-6 Protocol Layers (22_25).srt
1 - 7 - 1-7 Reference Models (1409).mp4
1 - 7 - 1-7 Reference Models (14_09).srt
1 - 8 - 1-8 Internet History (1239).mp4
1 - 8 - 1-8 Internet History (12_39).srt
1 - 9 - 1-9 Lecture Outline (0407).mp4
1 - 9 - 1-9 Lecture Outline (04_07).srt
2 - 1 - 2-1 Physical Layer Overview (09_27).mp4
2 - 1 - 2-1 Physical Layer Overview (09_27).srt
2 - 2 - 2-2 Media (856).mp4
2 - 2 - 2-2 Media (8_56).srt
2 - 3 - 2-3 Signals (1758).mp4
2 - 3 - 2-3 Signals (17_58).srt
2 - 4 - 2-4 Modulation (1100).mp4
2 - 4 - 2-4 Modulation (11_00).srt
2 - 5 - 2-5 Limits (1243).mp4
2 - 5 - 2-5 Limits (12_43).srt
2 - 6 - 2-6 Link Layer Overview (0414).mp4
2 - 6 - 2-6 Link Layer Overview (04_14).srt
2 - 7 - 2-7 Framing (1126).mp4
2 - 7 - 2-7 Framing (11_26).srt
2 - 8 - 2-8 Error Overview (1745).mp4
2 - 8 - 2-8 Error Overview (17_45).srt
2 - 9 - 2-9 Error Detection (2317).mp4
2 - 9 - 2-9 Error Detection (23_17).srt
2 - 10 - 2-10 Error Correction (1928).mp4
2 - 10 - 2-10 Error Correction (19_28).srt

ビデオを再生するときに vlc が自動的に字幕をロードできるように、mp4 ファイルの名前を srt ファイルと一致するように変更したいと考えています。誰かがこれを行うためのアルゴリズムについて議論していますか? 私は多くのプログラミング言語に精通しているため、ソリューション コードを任意の言語で提供することもできます。ただし、python と c++ が望ましいです。

編集:返信してくれたみんなに感謝します。srt ファイルの名前を変更する方が、その逆よりも簡単であることはわかっています。しかし、mp4 ファイルの名前を変更する方が面白いと思います。助言がありますか?

4

4 に答える 4

2

これらすべてのファイルが実際にこのスキームに従っている場合、Python の実装はほとんど簡単です。

import glob, os

for subfile in glob.glob("*.srt")
    os.rename(subfile, subfile.replace("_",""))

mp4 にアンダースコアも含まれている場合は、それらのループを追加する必要があります。

于 2013-04-06T07:55:13.540 に答える
2

for f in *.srt; do mv $f ${f%_}; done

于 2013-04-06T07:56:11.020 に答える
0

これは、ゼータが言ったことの単なる実装です:)

import os;
from path import path;
for filename in os.listdir('.'):        
    extension = os.path.splitext(path(filename).abspath())[1][1:]
    if extension == 'srt':        
        newName = filename.replace('_','');
        print 'Changing\t' + filename + ' to\t' + newName;
        os.rename(filename,newName);
print 'Done!'
于 2013-04-06T08:07:54.313 に答える