Net在python3中的使用

2024-09-30 20:34:12 发布

您现在位置:Python中文网/ 问答频道 /正文

任何人都可以在python尝试使用NET use时帮助我,我不知道python和perl中的/之间的区别,因为perl中的代码可以工作

$runMap = "C:\\Windows\\System32\\net.exe use \\\\$ip\\D\$ /persistent:no /user:$user_name $passwd"; 
system($runMap);

但在python3中不起作用

^{pr2}$

Tags: no代码nameipnetusewindowsexe
1条回答
网友
1楼 · 发布于 2024-09-30 20:34:12

Perl使用的是插值,也就是说,可以在双引号字符串中嵌入变量,因为perl5插值变量以$@标记开始。在您的例子中,您嵌入了$user_name和{}。在

Python变量名的前缀不是“magic character”(sigil),因此除非使用格式化语句,否则不能将它们嵌入字符串中。有几个制度,这里有一个与printf相似的想法:

cmd = "C:/Windows/System32/net.exe use Z: \\\\ip/D:/ /persistent:no /user:%s %s" % (username, passwd)

os.system(cmd)

作为一个前Perlmonger,我非常想念插值,所以我编写了一个Python模块来支持它。虽然我学到了很多关于Python的知识,但这是在浪费时间。Python编程是一种不同的风格,您不再需要插值。在

顺便说一句,与Perl的system()不同,Python的os.system()将始终生成一个shell(与C一样)。因此,它通常被认为是弃用。subprocess.Popen()方法提供了更多的控制。在

编辑:

随着python3.6和文本字符串插值(在pep498中指定)的出现,更常见的是f-strings,我的原始帖子需要另一种方法来实现这一点。在

可以使用单引号或双引号。基本上,我们只需将Python表达式(通常是一个变量)放在大括号内(类似于Ruby)。在

例如:

^{2}$

关于subprocess.Popen()的注释也过时了,因为python3.5现在的首选接口是subprocess.run()。在

相关问题 更多 >