一个Python的文件字典 - 怎么样?

Wil*_*skt 0 python dictionary file dynamic

我需要动态打开一些新的csv文件,具体取决于infile包含的数据.这些csv文件需要具有基于此数据的文件名,因此无法对其进行硬编码.

我正在尝试制作{filename,FILENAME.CSV}的字典,并且遇到以下问题:

    if not os.path.exists(filename):
        files_dict[filename] = open(filename,'w')
    files_dict[filename].write('Test')
Run Code Online (Sandbox Code Playgroud)

if语句工作正常 - 它会愉快地通过infile创建所有必需的csv文件.

它不喜欢写声明:

Traceback (most recent call last):
  File "R:\DataTeam\Orange\Landline\Fixed\Websource_Landline_FixedData_SplitIntoAccounts_20110307.py", line 141, in <module>
    files_dict[filename].write('Test')
KeyError: 'OBS Fixed 6-65544 - BRICO DEPOT 201005.csv'
Run Code Online (Sandbox Code Playgroud)

有关如何写入已成功创建的这些文件的任何想法?或者有更简单的方法吗?

谢谢,

托尼

Sha*_*hin 6

问题在于,如果文件已经存在,则不会打开文件或将文件名指定为dict中的键,因此是KeyError例外.

试试这个:

# open file if not yet open
files_dict.setdefault(filename, open(filename,'w')) 
files_dict[filename].write("test")
Run Code Online (Sandbox Code Playgroud)

如果dict中尚不存在文件名,则以写入模式打开文件,并将文件名作为键存储在dict中.请注意,已经存在但尚未分配给dict的文件将被覆盖.

如果您只执行单次写入,则可以组合这些行,因为setdefault它将返回分配给键的值.

files_dict.setdefault(filename, open(filename,'w')).write("test")
Run Code Online (Sandbox Code Playgroud)