создать новый CSV-файл в новом подкаталоге Python 3.6 - PullRequest
0 голосов
/ 13 мая 2018

Возникли проблемы с использованием переменных в новом dirpath при использовании with open для создания файла csv. Я могу создать штраф dirpath вместе с именем файла .csv и добавить их с помощью os.path.join. Но когда я пытаюсь использовать весь правильно отформатированный путь в операторе open, он добавляет дополнительную обратную косую черту рядом с текущей обратной косой чертой в строке ?? не удалось найти никакой документации о том, почему это может происходить.

Это ошибка

FileNotFoundError: [Errno 2] No such file or directory: 'Logs\\14-05-2018\\dfg.csv'

Если я просто напишу следующее, я могу создать подпапки и csvs без проблем.

with open(Logs\1234\asd.csv) 'w') as csvfile:

Так вот, что я получаю сообщение об ошибке в строке 43: with open(csvlogPath, 'w') as csvfile: Я пробовал с r вместо 'w' и той же проблемой. В недоумении через два дня спросить вас, ребята. :)

import csv, os.path

#Get and create csv filename string
logFN = input("Please name your trade.\n#")            
suffix = '.csv'
csvname = logFN + suffix
#Create dir name string
t = time.strftime("%d-%m-%Y-%H%M")
dirsname = os.path.join('Logs', t)

csvlogPath = os.path.join(dirsname,csvname)

with open(csvlogPath, 'w') as csvfile:
    filewriter = csv.writer(csvfile, delimiter=',', lineterminator='\n', quotechar='|', quoting=csv.QUOTE_MINIMAL)

    filewriter.writerow(['get', 'new', 'values', 'later'])

with open(csvlogPath, 'w') as f:
    reader = csv.reader(f)
 # read file row by row
    rwsCount = 0    
    for row in reader:        
        print (row, rwsCount)
        rwsCount += 1

line_number = rwsCount-1
print (line_number)

with open(csvlogPath, 'w') as f:
    mycsv = csv.reader(f)
    mycsv = list(mycsv)
    text = mycsv[line_number][0]

print (text) 

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

проверить этот код:

import csv, os.path

#Get and create csv filename string
import time

logFN = input("Please name your trade.\n#")
suffix = '.csv'
csvname = logFN + suffix
#Create dir name string
t = time.strftime("%d-%m-%Y-%H%M")
dirsname = os.path.join('Logs', t)

###########################
if not os.path.exists(dirsname):
    os.makedirs(dirsname)
###########################


csvlogPath = os.path.join(dirsname,csvname)

with open(csvlogPath, 'w') as csvfile:
    filewriter = csv.writer(csvfile, delimiter=',', lineterminator='\n', quotechar='|', quoting=csv.QUOTE_MINIMAL)

    filewriter.writerow(['get', 'new', 'values', 'later'])

with open(csvlogPath, 'r') as f:
    reader = csv.reader(f)
 # read file row by row
    rwsCount = 0
    for row in reader:
        print (row, rwsCount)
        rwsCount += 1

line_number = rwsCount-1
print (line_number)

with open(csvlogPath, 'r') as f:
    mycsv = csv.reader(f)
    mycsv = list(mycsv)
    text = mycsv[line_number][0]

print (text)
0 голосов
/ 13 мая 2018

вам нужно сделать каталоги в python, которые вы можете использовать os.makedirs(path) примерно так:

csvlogPath = os.path.join(dirsname,csvname)
os.makedirs(os.path.dirname(csvlogPath), exist_ok=True)
with open(csvlogPath, 'w') as csvfile:
    filewriter = csv.writer(csvfile, delimiter=',', lineterminator='\n', quotechar='|', quoting=csv.QUOTE_MINIMAL)

    filewriter.writerow(['get', 'new', 'values', 'later'])

При открытии используйте «r» для чтения и «w» для записи, поэтому вам нужно изменитьрядом с открывается:

with open(csvlogPath, 'r') as f:
    reader = csv.reader(f)
 # read file row by row
    rwsCount = 0    
    for row in reader:        
        print (row, rwsCount)
        rwsCount += 1

line_number = rwsCount-1
print (line_number)

with open(csvlogPath, 'r') as f:
    mycsv = csv.reader(f)
    mycsv = list(mycsv)
    text = mycsv[line_number][0]
...