0

我正在将文件上传到 GCS(谷歌云存储)。我的脚本正在运行。但现在我尝试在终端中运行它python uploadtogcs.py 'C:/Users/AS/Documents/GCSUploadParameters.json'

我收到错误:

    Traceback (most recent call last):
  File "C:\Users\AS\uploadtogcs.py", line 43, in <module>
    upload_files(sys.argv[0])
  File "C:\Users\AS\uploadtogcs.py", line 11, in upload_files
    contents = json.loads(data)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2544.0_x64__qbz5n2kfra8p0\lib\json\__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2544.0_x64__qbz5n2kfra8p0\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2544.0_x64__qbz5n2kfra8p0\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

我试着写json.load(),但它没有帮助。我也尝试删除file.read(). 然后我有另一个错误。我想从终端运行并在那里给出论点。

这是我的代码:

from google.cloud import storage
import os
import glob
import json
import sys

def upload_files(config_file):
    # Reading 3 Parameters for upload from JSON file
    with open(config_file, "r") as file:
        data = file.read()
        contents = json.loads(data)

    # Setting up login credentials
    os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = contents['login_credentials']
    # The ID of GCS bucket
    bucket_name = contents['bucket_name']
    # Setting path to files
    LOCAL_PATH = contents['local_path']

    for source_file_name in glob.glob(LOCAL_PATH + '/**'):

    # For multiple files upload
    # Setting destination folder according to file name 
        if os.path.isfile(source_file_name):
            partitioned_file_name = os.path.split(source_file_name)[-1].partition("-")
            file_type_name = partitioned_file_name[0]

            # Setting folder where files will be uploaded
            destination_blob_name = file_type_name + "/" + os.path.split(source_file_name)[-1]

            # Setting up required variables for GCS 
            storage_client = storage.Client()
            bucket = storage_client.bucket(bucket_name)
            blob = bucket.blob(destination_blob_name)

            # Running upload and printing confirmation message
            blob.upload_from_filename(source_file_name)
            print("File from {} uploaded to {} in bucket {}.".format(
                source_file_name, destination_blob_name, bucket_name
            ))


upload_files(sys.argv[0])

你能帮我么?

亲切的问候,安娜

4

2 回答 2

0

我的朋友帮助了我。

它必须是:upload_files(sys.argv[1])

位置参数 1,而不是 0。

现在一切正常。希望它对某人有所帮助。

于 2022-01-12T17:35:05.583 回答
0

而不是自己读取文件,你应该把它交给这样的json.load函数:

import json 
def upload_files(config_file):
    # Reading 3 Parameters for upload from JSON file
    with open(config_file, "r") as file:
        contents = json.load(file)

于 2022-01-12T16:21:05.770 回答