2016-04-26 54 views
2

我在Python3.4中开发了一个软件,其中包含一组变量,其中一些是路径。从Windows资源管理器复制并粘贴路径文件到变量

我在文件路径名中的分隔符有问题。 我知道我可以在字符串前面加上一个“r”,或者使用双反斜杠或斜杠来创建一个原始字符串,但是因为这个软件将被其他用户使用,而且平均一个只是一个“复制粘贴“的家伙,我不希望他们操纵文件名。

所以用户刚刚从Windows资源管理器中的文件路径复制并粘贴到配置文件,是这样的:

path_variable = "C:\Users\home\room\table.txt" 

,我想写修改它,可以使用的功能。

我该怎么办?如果我离开的字符串这样我获得,因为\ U型的unicode的错误...

非常感谢,

Ciccio

更新

配置文件是不是python文件,但只是一个.txt文件内的变量和它们的值:

var_name = var_val 
path_variable = "C:\Users\home\room\table.txt" 
height = 20 
plot_write_variable = ["y", "n"] 

这只是一个临时解决方案直到我完成GUI。这个文件必须非常容易理解,并且软件必须被没有Python或编程知识的人使用。最终用户只需更改变量值并单击可执行文件即可运行该程序,而不需要其他任何操作。出于这个原因,我想尽可能避免使用任何python命令。

读取配置文件我用这个函数:

import imp 
def read_inputFile(path): 
    file = open(path) 
    variables = imp.load_source('data', '', file) 
    file.close() 
    return variables 

回答

0

你的配置文件没有被用Python编写的。你可以使用configparser,据我所知,它不会专门解释反斜杠。

这可能需要您的配置文件的逻辑重新工作。不要直接使用import语句直接导入配置文件,而是使用configparser模块对其进行解析。您可能还需要调整配置文件的语法以匹配configparser预期的内容。

+0

感谢您的回答。我更新了一下我的问题,以便更清楚。我喜欢'configparser'的想法,但是,正如你所说,我必须调整一下语法,现在有没有办法避免它?否则,我继续'configparser' – cicciodevoto

+0

@cicciodevoto:你的配置文件*是一个Python文件。如果不是,那么'imp'将无法加载它。如果你不喜欢Python的全部复杂性,那就不要使用它。 – Kevin

+0

是的你是对的这是一个Python文件,对不起我的错误。好的,谢谢你的建议。 – cicciodevoto

0

你说你的用户是“复制和粘贴”种类的人,但你有他们粘贴文件的位置到一个配置文件。我不知道你的代码,但如果配置文件是在Python中,你可以添加一行:

path_variable = input("Enter the path").replace("\\", "\\\\") 

的Python解释\\\,修复您的问题

这解决了他们的问题复制粘贴到文件中,而是提示他们输入文件路径。

+0

感谢您的答案,这是一个很好的解决方案,让我有更多的交互式脚本,我会记住未来,但这不是我现在需要的。我更新了这个问题,以便更清楚。 – cicciodevoto

相关问题