如何为每个日期创建一个文件夹并将文件放入其中?

时间:2019-01-15 13:21:25

标签: python

我每个日期都创建一个文件夹,然后在该文件夹下创建一组文件。我为此使用了此功能:

path_stats= pathlib.Path('/home/dataset/Signal_Synchronization_Traces/' + str(date.today()) + '_Results/Statistical_Test_Results').mkdir(parents=True, exist_ok=True)
print(path_stats)

for i in range(10):
    file = open(str(path_stats)+'/File'+ str(i) + '.txt','wb')
    file.write('hello')
    print('done')
    file.close 

但是,此函数导致错误:

    file = open(str(path_stats)+'/File'+ str(i) + '.txt','wb')
FileNotFoundError: [Errno 2] No such file or directory: 'None/File0.txt'
None

3 个答案:

答案 0 :(得分:3)

在尝试打开文件之前创建文件夹结构:

import os
for i in range(10):
    filename = str(path_stats)+'/File'+ str(i) + '.txt'
    # Create folder structure
    os.makedirs(os.path.dirname(filename), exist_ok=True)
    file = open(filename,'wb')
    file.write('hello')
    print('done')
    file.close 

请注意,当您以二进制模式打开文件时,将无法写入字符串“ hello”。

答案 1 :(得分:2)

path_statsNone,因此str(path_stats)+'/File'+ str(i) + '.txt'的结果为'None / File0.txt',它不是目录。

原因是pathlib.mkdir没有返回值。将您的代码更改为:

...
path_stats = pathlib.Path('/home/dataset/Signal_Synchronization_Traces/' + str(date.today()) + '_Results/Statistical_Test_Results')
path_stats.mkdir(parents=True, exist_ok=True)
print(path_stats)
...

答案 2 :(得分:2)

简短答案:

path_stats = pathlib.Path('/tmp/home/dataset/Signal_Synchronization_Traces/' + str(date.today()) + '_Results/Statistical_Test_Results')
path_stats.mkdir(parents=True, exist_ok=True)

长答案:

path_stats不包含目录字符串

from datetime import date
import pathlib

path_stats = pathlib.Path('/tmp/home/dataset/Signal_Synchronization_Traces/' + str(date.today()) + '_Results/Statistical_Test_Results').mkdir(parents=True, exist_ok=True)
print(path_stats)

变量是:

None

您需要先存储变量并在其上运行方法mkdir

from datetime import date
import pathlib

path_stats = pathlib.Path('/tmp/home/dataset/Signal_Synchronization_Traces/' + str(date.today()) + '_Results/Statistical_Test_Results')
path_stats.mkdir(parents=True, exist_ok=True)
print(path_stats)

然后变量包含路径:

/tmp/home/dataset/Signal_Synchronization_Traces/2019-01-15_Results/Statistical_Test_Results

然后您将可以运行代码

for i in range(10):
    file = open(str(path_stats) + '/File' + str(i) + '.txt', 'wb')
    file.write(b'hello')
    print(str(path_stats) + '/File' + str(i) + '.txt')
    print('done')
    file.close()

产生:

/tmp/home/dataset/Signal_Synchronization_Traces/2019-01-15_Results/Statistical_Test_Results/File0.txt
done
/tmp/home/dataset/Signal_Synchronization_Traces/2019-01-15_Results/Statistical_Test_Results/File1.txt
done
(...)

警告:如果使用二进制文件,则需要保存二进制数据。

file = open(str(path_stats) + '/File' + str(i) + '.txt', 'wb')
file.write(b'hello')

替代:

file = open(str(path_stats) + '/File' + str(i) + '.txt', 'w')
file.write('hello')