Python2/Windows7 : Opening filename that contains a german Umlaut

标签 python file encoding tkinter

我正在尝试打开一个文件,其文件名是通过在附加了 Tkinter.StringVarttk.Entry 中键入而创建的。

如果我尝试通过在另一个文件中输入相同的文件名来再次open()该文件 如果我使用德语“Umlaute”,则此条目将失败。

我从 StringVar.get() 方法获得一个 utf-8 编码的字符串。

当我列出当前工作目录中的文件时,它们不是 utf-8 编码的。 (我使用的是 Windows 7!)

如何处理?

最佳答案

# -*- coding: utf-8 -*-

import Tkinter as tk
import ttk
import sys
import os
from pprint import pprint
import pickle


class TestApp(tk.Tk):

    def __init__(self, *args, **kwargs):

        tk.Tk.__init__(self, *args, **kwargs)

        self.varFilename = tk.StringVar()
        self.etyFilename = ttk.Entry(master=self, textvariable=self.varFilename)

        self.frmBtn = ttk.Frame(master=self)
        self.btnSave = ttk.Button(master=self.frmBtn, text='Save',
                                  command=self.save)
        self.btnOpen = ttk.Button(master=self.frmBtn, text='Open',
                                  command=self.openFile)

        self.etyFilename.grid(row=0, column=0, sticky=tk.EW, padx=3, pady=3)
        self.frmBtn.grid(row=1, column=0, sticky=tk.EW)
        self.btnSave.grid(row=0, column=0, sticky=tk.SE, padx=3, pady=3)
        self.btnOpen.grid(row=0, column=1, sticky=tk.SE, padx=3, pady=3)

        self.mainloop()

    def save(self, *args):
        someData = {'foo': 'bar'}

        filename = self.varFilename.get()

        try:
            with open(filename, 'wb') as f:
                pickle.dump(someData, f)

        except IOError, e:
            print e
            sys.exit(1)


    def openFile(self, *args):
        filename = self.varFilename.get()
        print filename

        print 'Files in cwd:'
        pprint(os.listdir(os.getcwd()))

        try:
            with open(filename, 'rb') as f:
                someData = pickle.load(f)
                print someData

        except IOError, e:
            print e
            sys.exit(1)


TestApp()

关于Python2/Windows7 : Opening filename that contains a german Umlaut,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42934426/

相关文章:

Python:将字符串插入Mysql数据库

Python Requests Invalid URL Label 错误

java - 没有字符串打印到文件中

python - 如果文件不存在则复制文件

python - 如何填充 NAN "ignoring"索引?

python - python 对包含字符串和整数的列表中的元素求和,并将答案放入另一个列表中

c - 用 C 语言解析具有多个相似 block 的文件

java - 将 byte[] 编码为 String

c - 为什么多字节字符到 char32_t 的转换使用 UTF-8 作为多字节编码而不是特定于语言环境的编码?

php - 导入的数据库转储从 latin1 数据库到 utf8 数据库