#!/usr/bin/env python
import requests
import os.path
import sys
import shutil
import pandas as pd
from datetime import datetime
import time
def getFile():
url = "https://www.gosolarcalifornia.ca.gov/equipment/documents/Grid_Support_Inverter_List_Full_Data.xlsm"
content = requests.get(url)
date = datetime.date(datetime.now())
directory = "C:\\Users\\slee5\\Desktop\\Folder"
archivedDirectory = "C:\\Users\\slee5\\Desktop\\Folder\\ArchivedFolder"
#date = datetime.datetime.fromtimestamp(os.path.getmtime(archivedDirectory)))
fileName = "Grid_Support_Inverter_List_Full_Data"
extension = ".csv"
path = fileName + extension
print ("Files will be saved in the following directory: "+directory+"\n")
print ("Old Files with the same name will be archived in the following directory: "+archivedDirectory+"\n")
print ("NOTICE: File will be converted to .csv file...")
if os.path.isdir(directory):
#Check if the Archived Folder Exists, if it does not create it
if(os.path.isdir(archivedDirectory)):
pass
else:
os.mkdir(archivedDirectory)
print ("SUCCESS: Directory was found.")
counter = 0
if (os.path.exists(directory+"\\"+fileName+extension)):
counter += 1
while (os.path.exists(archivedDirectory+"\\"+fileName+"_%s_%s"%(str(date), str(counter))+extension)):
counter += 1
if counter > 0:
print ("File: "+fileName+" already exists in directory,moving old file to Archived Folder. ")
shutil.move(directory+"\\"+fileName+extension, archivedDirectory+"\\"+fileName+"_%s"%(str(date))+extension)
path = archivedDirectory+"\\"+fileName+"_%s"%(str(date))+extension
date1 = time.ctime(os.path.getmtime(path))
os.rename(path,archivedDirectory+"\\"+fileName+"_%s"%(str(date1))+extension)
with open(os.path.join(directory, path), 'wb') as f:
f.write(content.content)
deleteRows(directory, path)
print("Done.")
else:
print("ERROR: Directory is not found.")
sys.exit()
def deleteRows(directory, path):
newFile = pd.read_excel(os.path.join(directory,path))
newFile = newFile.drop(range(14), axis = 0)
newFile.to_csv(os.path.join(directory, path), encoding='utf8', header=False, index=False)
def main():
getFile()
if __name__ == "__main__":
main()
Need help with getting the correct date modified format in dd-mm-yyyy. I tried all the available online resources.
Error Image:
Background Information:
The script moves the old file into an archived directory and renames it with the file name + modified date. The modified date is what I am trying to get and its correct format.
Your current code is converting a datetime directly to a string, which includes excess information. Use datetime string formatting (8.1. datetime — Basic date and time types — Python 2.7.17 documentation ) to get what you want:
>>> from datetime import datetime
>>> date1 = datetime.now()
>>> str(date1)
'2019-12-30 12:01:09.852842'
>>>
>>> date1.strftime('%d-%m-%Y')
'30-12-2019'
>>>
Update: Get this error with those two additions from your hint.
date1 = time.ctime(os.path.getmtime(path))
date1 = str(date1)
date1= date1.strftime('%d-%m-%y')
The error indicates you somewhere converted a datetime object to a string object, and string objects don't have such method. Look upstream in your code and make sure you are not converting a datetime object to string.
I was able to get pass the syntax error but the expected result didn't show.
Expected Result:
Old file is supposed to be renamed Grid_Support_....._2019-12-30
New File is supposed to be named Grid_Support_.....with no date on it
New file is supposed to be inside Folder directory but for some reason it moved to Archived Directory
Old file is moved to the archived directory
I have attached a copy of the excel file in case you wanted to test it on your computer.
The date on it is 12-30-2019 so you can actually use it. If it was 12-31-2019 then the results that
you wanted to see won't show.
Code:
#!/usr/bin/env python
import requests
import os.path
import sys
import shutil
import pandas as pd
from datetime import datetime
import time
def getFile():
url = "https://www.gosolarcalifornia.ca.gov/equipment/documents/Grid_Support_Inverter_List_Full_Data.xlsm"
content = requests.get(url)
date = datetime.date(datetime.now())
directory = "C:\\Users\\slee5\\Desktop\\Folder"
archivedDirectory = "C:\\Users\\slee5\\Desktop\\Folder\\ArchivedFolder"
#date = datetime.datetime.fromtimestamp(os.path.getmtime(archivedDirectory)))
fileName = "Grid_Support_Inverter_List_Full_Data"
extension = ".csv"
path = fileName + extension
print ("Files will be saved in the following directory: "+directory+"\n")
print ("Old Files with the same name will be archived in the following directory: "+archivedDirectory+"\n")
print ("NOTICE: File will be converted to .csv file...")
if os.path.isdir(directory):
#Check if the Archived Folder Exists, if it does not create it
if(os.path.isdir(archivedDirectory)):
pass
else:
os.mkdir(archivedDirectory)
print ("SUCCESS: Directory was found.")
counter = 0
if (os.path.exists(directory+"\\"+fileName+extension)):
counter += 1
while (os.path.exists(archivedDirectory+"\\"+fileName+"_%s_%s"%(str(date), str(counter))+extension)):
counter += 1
if counter > 0:
print ("File: "+fileName+" already exists in directory,moving old file to Archived Folder. ")
shutil.move(directory+"\\"+fileName+extension, archivedDirectory+"\\"+fileName+"_%s"%(str(date))+extension)
path = archivedDirectory+"\\"+fileName+"_%s"%(str(date))+extension
date1 = time.ctime(os.path.getmtime(path))
os.rename(path,archivedDirectory+"\\"+fileName+"_%s"%(str(date1).replace(":"," "))+extension)
with open(os.path.join(directory, path), 'wb') as f:
f.write(content.content)
deleteRows(directory, path)
print("Done.")
else:
print("ERROR: Directory is not found.")
sys.exit()
def deleteRows(directory, path):
newFile = pd.read_excel(os.path.join(directory,path))
newFile = newFile.drop(range(14), axis = 0)
newFile.to_csv(os.path.join(directory, path), encoding='utf8', header=False, index=False)
def main():
getFile()
if __name__ == "__main__":
main()
Actual Result:
This is pretty confusing to read... why don't you stick with the pattern:
filename = "myfile"
directoryname = r"\\mydirectory\mysubdirectory"
fullpath = os.path.join(directoryname,filename)
That's not only easier to read but avoids all this concatenating of filenames and folder names and "\\". I'm not surprised something is ending up in the wrong folder.
Update:
How to I fix the fille name of the file in the archived folder to show file name + modified date?
Modified date: 2019-12-30
Disregard the first file. I fixed the code so both files don't show in archived folder. I renamed path to path1 since
path is already used previously, so I made a new variable called path1.