Как только загрузить только имя файла (не все непосредственно имя + имя файла) в корзину хранения Google - PullRequest
0 голосов
/ 29 мая 2019

Я нашел способ загрузить несколько файлов CSV одновременно в облачное хранилище Google, которые удовлетворяют определенным критериям. У меня проблема в том, что когда они все загружают в корзину хранения Google, вместе с ним загружается полный путь к файлу. Я хочу загрузить только фактическое имя файла

Я попытался использовать имя os.path.basename, но оно не работает. Есть ли другой способ получить только базовое имя перед его загрузкой ИЛИ есть ли способ просто переименовать файл перед его загрузкой?

import glob 
import os 
from pathlib import Path
from os import listdir
from google.cloud import storage

GOOGLE_APPLICATION_CREDENTIALS = "O:\My Creds\creds.json"

for file in glob.glob("O:\Team Drives\AU_A\Raw_Dauts\Dynamets\**\*.csv", recursive = True):
   filename = os.path.basename(file)  # throught this would work but doesn't
   storage_client = storage.Client.from_service_account_json(GOOGLE_APPLICATION_CREDENTIALS)
   bucket = storage_client.get_bucket('bukcetang81')
   blob = bucket.blob("Dynamic_datasets/" +filename)
   blob.upload_from_filename(filename)

1 Ответ

0 голосов
/ 29 мая 2019

Я бы посоветовал вам удалить параметр «имя файла», вместо того чтобы жестко закодировать его с именем самого файла:

for file in glob.glob("O:\Team Drives\AU_A\Raw_Dauts\Dynamets\**\*.csv", recursive = True):
       storage_client = storage.Client.from_service_account_json(GOOGLE_APPLICATION_CREDENTIALS)
       bucket = storage_client.get_bucket('bukcetang81')
       blob = bucket.blob(destination_filename)
       blob.upload_from_filename(source_filename)
...