在新的子目录python 3.6

时间:2018-05-13 13:12:36

标签: python-3.x csv os.path

使用with open创建csv文件时,在新路径中使用变量时遇到问题。 我可以使用.csv文件名创建dirpath,并使用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 :(得分:1)

你需要在python中制作dirs,你可以使用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]

答案 1 :(得分:1)

测试此代码:

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)