相关疑难解决方法(0)

如何在同一目录或子目录中导入该类?

我有一个存储所有.py文件的目录.

bin/
   main.py
   user.py # where class User resides
   dir.py # where class Dir resides
Run Code Online (Sandbox Code Playgroud)

我想在main.py中使用user.pydir.py中的.
如何将这些Python类导入main.py
此外,User如果user.py位于子目录中,如何导入类?

bin/
    dir.py
    main.py
    usr/
        user.py
Run Code Online (Sandbox Code Playgroud)

python python-import

582
推荐指数
10
解决办法
84万
查看次数

Python 3中的包不需要__init__.py吗?

我使用的是Python 3.5.1.我在这里阅读了文档和包部分:https://docs.python.org/3/tutorial/modules.html#packages

现在,我有以下结构:

/home/wujek/Playground/a/b/module.py
Run Code Online (Sandbox Code Playgroud)

module.py:

class Foo:
    def __init__(self):
        print('initializing Foo')
Run Code Online (Sandbox Code Playgroud)

现在,在/home/wujek/Playground:

~/Playground $ python3
>>> import a.b.module
>>> a.b.module.Foo()
initializing Foo
<a.b.module.Foo object at 0x100a8f0b8>
Run Code Online (Sandbox Code Playgroud)

同样,现在在家里,超级文件夹Playground:

~ $ PYTHONPATH=Playground python3
>>> import a.b.module
>>> a.b.module.Foo()
initializing Foo
<a.b.module.Foo object at 0x10a5fee10>
Run Code Online (Sandbox Code Playgroud)

实际上,我可以做各种各样的事情:

~ $ PYTHONPATH=Playground python3
>>> import a
>>> import a.b
>>> import Playground.a.b
Run Code Online (Sandbox Code Playgroud)

为什么这样做?我虽然有被需要的__init__.py文件(空的都可以)两种a,并bmodule.py要导入的时候Python的路径指向Playground文件夹?

这似乎已经从Python 2.7改变了:

~ $ PYTHONPATH=Playground …
Run Code Online (Sandbox Code Playgroud)

python package python-3.x

146
推荐指数
5
解决办法
6万
查看次数

如何在Python中导入变量包,就像在PHP中使用变量变量($$)一样?

我想导入一些包,具体取决于用户选择的值.

默认为file1.py:

from files import file1
Run Code Online (Sandbox Code Playgroud)

如果用户选择file2,它应该是:

from files import file2
Run Code Online (Sandbox Code Playgroud)

在PHP中,我可以使用变量变量:

$file_name = 'file1';
include($$file_name);
Run Code Online (Sandbox Code Playgroud)
$file_name = 'file2';
include($$file_name);
Run Code Online (Sandbox Code Playgroud)

我怎么能用Python做到这一点?

python variables variable-variables

39
推荐指数
5
解决办法
3万
查看次数

从文本文件中检索变量值的最佳方法 - Python - Json

参考这个问题,我有一个类似但不一样的问题..

在我的路上,我将有一些文本文件,结构如下:

var_a: 'home'
var_b: 'car'
var_c: 15.5
Run Code Online (Sandbox Code Playgroud)

我需要python读取文件,然后创建一个名为var_a的变量,其值为'home',依此类推.

例:

#python stuff over here
getVarFromFile(filename) #this is the function that im looking for
print var_b
#output: car, as string
print var_c
#output 15.5, as number.
Run Code Online (Sandbox Code Playgroud)

这是否可能,我的意思是,即使保留var类型?

请注意,我对文本文件结构有完全的自由,如果我提议的那个不是最好的,我可以使用我喜欢的格式.

编辑:ConfigParser可以是一个解决方案,但我不喜欢它,因为在我的脚本中我将有时参考文件中的变量

config.get("set", "var_name")
Run Code Online (Sandbox Code Playgroud)

但我喜欢的是直接引用变量,就像我在python脚本中声明的那样......

有一种方法可以将文件导入为python字典吗?

哦,最后一点,请记住,我不确切知道文本文件中有多少变量.

编辑2:我对stephan的JSON解决方案非常感兴趣,因为通过这种方式,可以使用其他语言(PHP,然后通过AJAX JavaScript)简单地读取文本文件,但是在执行该解决方案时我失败了:

#for the example, i dont load the file but create a var with the supposed file content
file_content = "'var_a': 4, 'var_b': 'a string'"
mydict = dict(file_content)
#Error: ValueError: dictionary update …
Run Code Online (Sandbox Code Playgroud)

python variables text-files

38
推荐指数
6
解决办法
12万
查看次数

如何从父子目录导入模块

我想class从父目录中的一个目录中的 python 文件中导入一个。这是我当前的文件夹结构:

?   run_simulation_from_parent.py
?   __init__.py
?
????.vscode
?       launch.json
?       settings.json
?
????mod
?   ?   mods.py
?   ?   __init__.py
?   ?
?   ????__pycache__
?           __init__.cpython-37.pyc
?
????sim
?   ?   run_simulation.py
?   ?   __init__.py
?   ?
?   ????__pycache__
?           __init__.cpython-37.pyc
?
????__pycache__
        __init__.cpython-37.pyc
Run Code Online (Sandbox Code Playgroud)

该文件mod/mods.py包含以下类:

class Objective:
    """Objective function class"""

    def __init__(self, x):
        self.x = x
Run Code Online (Sandbox Code Playgroud)

该文件sim/run_simulation.py包含:

from mod.mods import Objective

x = 5
obj = Objective(x)
Run Code Online (Sandbox Code Playgroud)

当我尝试运行它时,出现以下错误:

  File "sim/run_simulation.py", line 1, in <module> …
Run Code Online (Sandbox Code Playgroud)

python python-import

5
推荐指数
2
解决办法
1674
查看次数

为什么我不能在python中导入一个类?

这是我的文件夹结构:

??? Basic
??? Coche
?   ??? __init.py__
?   ??? coche.py
??? miPrimerCoche.py
Run Code Online (Sandbox Code Playgroud)

我想在miPrimerCoche中导入类"coche.py".在coche.py我有这个:

class Coche:

    def __init__(self, marca, color, caballos):
        self.marca = marca
        self.color = color
        self.caballos = caballos

    def datos(self):
        return "Este coche es un: " + self.marca + \
           " de color: " + self.color + " y con: " + str(self.caballos)    + " caballos"
Run Code Online (Sandbox Code Playgroud)

而且,在miPrimerCoche我有这个代码:

from Coche import coche

miMercedes = coche("Toyota", "verde", 50)
print miMercedes.marca
print miMercedes.datos()
Run Code Online (Sandbox Code Playgroud)

然后,当我运行miPrimerCoche时,我收到此错误:

Traceback (most recent call last):
  File     "/Users/personalUser/PycharmProjects/untitled/Basic/importar_clase.py", …
Run Code Online (Sandbox Code Playgroud)

python

0
推荐指数
1
解决办法
88
查看次数