У меня есть простой Python скрипт, который предназначен для создания папки в каталоге Windows, загрузки некоторых файлов на Google Drive, а затем перемещения файлов во вновь созданную папку и удаления исходного исходного файла.
Казалось, что все работало, как планировалось, когда я изначально писал сценарий, за исключением того факта, что я фактически не передавал данные на диск Google с помощью команды SetContentFile
из pydrive. Как только я добавил это, я заметил, что shutil.move
копировал файлы, но не смог удалить исходные файлы. Я не мог понять, почему, поэтому я решил переместить shutil.move
в отдельное предложение l oop, и это, похоже, решило большую часть моей проблемы. Теперь он копирует все мои файлы в новую папку, как и ожидалось, но не может удалить самый последний исходный файл из папки root.
Когда я пытаюсь запустить cmd без pass
, он говорит мне, что файл все еще открыт каким-то другим процессом. Что может быть причиной этого и как я могу решить эту проблему? Кроме того, почему SetContentFile
и shutil.move
не работают в одном предложении l oop? Любая помощь будет оценена!
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
import glob,os,shutil
import datetime, time
os.chdir(os.path.dirname(os.path.abspath(__file__)))
gauth = GoogleAuth()
#gauth.LocalWebserverAuth()
# Try to load saved client credentials
gauth.LoadCredentialsFile("mycreds.txt")
if gauth.credentials is None:
# Authenticate if they're not there
gauth.LocalWebserverAuth()
elif gauth.access_token_expired:
# Refresh them if expired
gauth.Refresh()
else:
# Initialize the saved creds
gauth.Authorize()
# Save the current credentials to a file
gauth.SaveCredentialsFile("mycreds.txt")
drive = GoogleDrive(gauth)
fid = '[FOLDER ID PLACEHOLDER]'
#Check to see if today's folder is created
date = datetime.date.today()
today = date.strftime('%Y-%m-%d')
starting_folder = '[INSERT STARTING FOLDER]'
if not os.path.exists(starting_folder + "/" + today):
os.makedirs(starting_folder + "/" + today)
destination_folder = starting_folder + "/" + today
#Change directory to the folder where FILES are stored
os.chdir(INSERT WORKING DIRECTORY)
for file in glob.glob("*.xlsx"):
try:
print(file)
with open(file,"r") as f:
fn = os.path.basename(f.name)
fp = os.path.abspath(f.name)
file_drive = drive.CreateFile({'parents':[{'kind':"drive#parentReference",'id':fid}],'title':fn})
file_drive.SetContentFile(fp)
file_drive.Upload()
print("The file: " + fn + " has been uploaded to Google Drive.")
#shutil.move(starting_folder + "/" + fn,destination_folder + "/" + fn)
# print("The file: " + fn + " has been moved to the folder.")
f.close()
except:
pass
for file in glob.glob("*.xlsx"):
try:
fn = os.path.basename(file)
shutil.move(starting_folder + "/" + fn,destination_folder + "/" + fn)
# print("The file: " + fn + " has been moved to the folder.")
except:
pass
print("All files have been uploaded to Google Drive, and the DRIVE has been updated.")