オンラインリポジトリから多数のPDFドキュメントをダウンロードしていますが、適切な命名規則はありません。ファイルは、私がExcelスプレッドシートに置いた名前のリストと整列しています。Python:予め定義されたリストを使用してディレクトリ内のファイルのバッチリネームを作成し、日付順にソート
Excelスプレッドシートをインポートし、変数に名前を割り当ててから、os.rename()を使用して、ダウンロードしたファイルの名前を変更してリストにマッチさせます。
.PDFをダウンロードすると、それぞれにURLで指定されているのではなく、ランダムな命名規則が与えられます。これらは、リンクが選択されるたびにランダムに生成されます。正しい順序で文書を並べ替えることができないため、問題が発生しています。
私がしたいのは、ドキュメントを「作成日」で並べ替えることです。 sleep()を使用することにより、文書番号が一致する文書を正しい順序でダウンロードしましたが、変更したい名前を反復処理するために適切に整列する方法がわかりません。ここで
は、私のコードのサンプルです:私は「new_names」を印刷する場合
#Import packages
import pandas as pd
from selenium import webdriver
import os
#Designate file locations/destinations
file = '/Users/username/Desktop/test.xlsx'
directory = '/Users/username/Downloads'
#Obtain instrument names
xl = pd.ExcelFile(file)
df1 = xl.parse('Sheet1', parse_cols=[2], names=['instrument'])
names = df1.instrument
prefix = xyz
#Obtain file location
imported_files = os.listdir(directory)
imported_files.remove('.DS_Store')
df1['importedFiles'] = imported_files
print(df1)
instrument importedFiles
0 146169-1975 2461030_123.PDF
1 147235-1975 2461030_2027.PDF
2 148367-1975 2461030_348.PDF
3 149563-1975 2461030_5327.PDF
4 171413-1977 2461030_555.PDF
5 186305-1977 2461030_5969.PDF
6 186726-1977 2461030_7610.PDF
7 186727-1978 2461030_7878.PDF
8 187748-1978 2461030_8733.PDF
#Set working directory
os.chdir('/Users/username/Downloads')
#Set a loop to rename
for x, y in zip(names, os.listdir('/Users/username/Downloads')):
file_name, file_ext = os.path.splitext(y)
new_names = ('{}_{}{}'.format(prefix, x, file_ext))
print(new_names)
os.rename(y, new_names)
sleep(0.5)
名の順序は私のコンソールで正しく出てきます。しかし、実際にファイルの名前を変更するために次のステップを踏むと、インポートされたファイルからランダムに生成された名前があるため、名前の変更は機能しません。
どのようにファイル名が入って来るのと同じ順序で変更されることを確認できますか?または、ファイルの順番をどのように変更して、名前を付けると、インストゥルメントの文字列が一致するようにすることができますか?
ありがとうございました!