Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python相当于Bash comand;回声;?_Python_Bash - Fatal编程技术网

Python相当于Bash comand;回声;?

Python相当于Bash comand;回声;?,python,bash,Python,Bash,我试图用Python控制RPi上的GPIO,但没有需要使用root权限的模块。 我发现了通过控制台将1或0“回送”到GPIO的值文件的简单方法。我还编写了一个Python脚本,可以自动完成这项工作。到现在为止,一直都还不错。 但这仅在文件(在本例中为:/sys/class/gpio/gpio17)已经存在时才起作用。 每次启动Pi后,我都可以通过控制台轻松创建此文件夹,如下所示: pi@raspberrypi ~ $ cd /sys/class/gpio pi@raspberrypi /sys/

我试图用Python控制RPi上的GPIO,但没有需要使用root权限的模块。 我发现了通过控制台将1或0“回送”到GPIO的值文件的简单方法。我还编写了一个Python脚本,可以自动完成这项工作。到现在为止,一直都还不错。 但这仅在文件(在本例中为:/sys/class/gpio/gpio17)已经存在时才起作用。 每次启动Pi后,我都可以通过控制台轻松创建此文件夹,如下所示:

pi@raspberrypi ~ $ cd /sys/class/gpio
pi@raspberrypi /sys/class/gpio $ echo "17" > export
在此之后,我将拥有/sys/class/gpio/gpio17文件夹,在其中我可以找到关于pin的信息并可以修改它

所以基本上我的问题是:如何将这一步合并到Python脚本中。有没有办法移动到目录并使用Python导出此文件夹? 我用一个单独的Bash脚本解决了这个问题,然后在Python脚本中运行了这个脚本,但我想避免使用几种语言,我想知道Python中是否有一个与“echo”comand等效的脚本。 我找了几天,但什么也没找到。 如果有,一个链接将高度赞赏以及

提前谢谢大家,


新手

根据您的描述,您只需将所需编号写入名为
/sys/class/gpio/export
的文件即可

GPIO_EXPORT = '/sys/class/gpio/export'
PIN = 17
with open(GPIO_EXPORT, 'w') as export:
    export.write(str(PIN))

有很多选择。您可以在python代码中直接使用bash语法和
os
module(或更灵活的-
子流程
module)

在工作目录中启动python解释器

>>> import os
>>> os.system("echo 18>import")
0
>>> exit()
$ ls -a
.  ..  import
$ cat import
18
或写入文件

>>> with open("newport", "w") as newport:
...     newport.write("19")
... 
>>> exit()
$ ls -a
.  ..  import  newport
$ cat newport 
19

等等。查看cd

未创建目录。它只是将shell的工作目录更改为该目录。如果目录不存在,那就不起作用了。您也不需要在目录中才能回显到目录中的文件(除非这里发生了一些奇怪的事情)。如果您使用Python,只使用为此目的编写的而不是sysfs不是更容易吗?您的第二行将创建一个名为“export”的文件,其中包含字符串“17”。它不做任何事情来创建一个目录,尤其不是一个名为“gpio17”的目录,而且创建的文件与gpio pin没有任何关系。@DanielRoseman实际上是这样的<代码>/sys/class/gpio/export
不是常规文件。写入
17
将通过sysfs暴露插脚17。修复了comand示例。是的,最后第一个想法为我实现了,使用操作系统模块工作。谢谢第二个实际上刚刚创建了一个文件夹,里面写了17个。@apaupau文件夹或文件?创建了一个文件,请再说一遍