gpt4 book ai didi

Python2/Windows7 : Opening filename that contains a german Umlaut

转载 作者:太空宇宙 更新时间:2023-11-03 15:30:18 25 4
gpt4 key购买 nike

我正在尝试打开一个文件,其文件名是通过在附加了 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com