我有一个目标文件路径,其结构如下所示.
C:\Program Files\Test\foobar.exe /G
Run Code Online (Sandbox Code Playgroud)
我需要做的是能够使用vba的shell()命令执行此文件.
我如何格式化文件路径以告诉Shell()它有一个参数,它需要调用以及运行.exe
我在下面看到/尝试过(无效),结果在右边.
file = """C:\Program Files\Test\foobar.exe"" /G" <---Bad file name or number (Error 52)
shell(file)
file2 = "C:\Program Files\Test\foobar.exe /G" <---file never found
shell(file2)
Run Code Online (Sandbox Code Playgroud)
我已成功运行其他.exe使用shell()所以我知道它不是vba或函数的问题.
例:
works = "C:\Program Files\Test\test.exe"
shell(works)
Run Code Online (Sandbox Code Playgroud)
我对执行需要其他参数的文件的过程并不是特别熟悉,所以如果我错过了或者您需要更多信息,请告诉我.
我从来没有完全包围编码和解码unicode到其他格式(utf-8,utf-16,ascii等),但我已经到了一个令人困惑和令人沮丧的墙.我想要做的是从python模块打印utf-8卡符号(♠,♥,♦,♣)到Windows控制台.我正在使用的控制台是git bash,我使用console2作为前端.我尝试/阅读了下面的一些方法,到目前为止还没有任何工作.让我知道我正在做的事情是否可能以及正确的做法.

从python模块尝试同样的事情.
当我执行.py时,这就是结果.
print(u'?')
UnicodeEncodeError: 'charmap' codec can't encode character '\u2660' in position 0: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)尝试编码♠.这让我回到了用utf-8编码的unicode集,但仍然没有spade符号.
text = '?'
print(text.encode('utf-8'))
b'\xe2\x99\xa0'
Run Code Online (Sandbox Code Playgroud)我觉得我错过了一步或者没有理解整个编码/解码过程.我读过这个,这个,这个.最后一个页面的提示包裹sys.stdout的入代码,但该文章说使用stdout是不必要的,点使用的编解码器模块的另一页.
我很困惑!我觉得很难找到关于这个主题的思想质量文档,希望有人可以清除它.任何帮助总是受到赞赏!
奥斯汀
我正在尝试在终端外的emacs上打开文件.当我编码而不是通过终端进行编码时,我更喜欢gui/ide环境.我最初认为打字emacs filename.py会通过Emacs.app打开该文件,但它只允许我通过终端编辑文件.当这不起作用时,我考虑编辑我的主目录中的.profile和.emacs文件,但这无济于事.
也许这比我读过的更直观,但我似乎无法弄明白.任何帮助表示赞赏.
所以过去几年我一直在使用Cygwin,我已经安装了几次.但是,我从未在安装过程中遇到过挂起的问题.当发生这种情况时,安装会逐渐冻结,并且不会让人感到沮丧.我已经读到这是一个有点常见的问题,但就像我说的那样,我以前从未遇到过它.
这是我正在做的事情以及它挂在我身上的逐个播放.
所以我正在寻找的是如何从这一点开始帮助安装程序继续?我需要做些什么才能进入cygwin并为其提供完成工作所需的额外动力.
解决上面的问题:
因此,在稍微调整安装后,我发现如果您关闭冻结安装并重新执行安装文件,它会强制安装超过前一次遇到的安装点.例如,在取消94%的挂钩安装(如上所述)之后,我再次运行安装文件,并在安装再次陷入困境之前达到95%.在成功安装cygwin之前,我重复了这个设置大约5次.
就像我说的,这只是一个解决方案,可能是最好/唯一的解决方案.
问题
我正在使用Python的多处理模块来异步执行功能。我想做的是能够跟踪每个进程调用和执行时脚本的总体进度def add_print。例如,我希望下面的代码在每次进程运行该函数时将其加1 total并打印出值(1 2 3 ... 18 19 20)。我的第一次尝试是使用全局变量,但这没有用。由于该函数是异步调用的,因此每个进程读取total为0开始,并独立于其他进程加1。因此,输出为20 1而不是递增值。
即使函数是异步运行的,我如何才能以同步方式从映射函数中引用相同的内存块?我的一个想法是以某种方式缓存total在内存中,然后在添加到时引用该确切的内存块total。这是python中一种可能且基本合理的方法吗?
请让我知道您是否需要更多信息或我的解释不够充分。
谢谢!
码
#!/usr/bin/python
## Import builtins
from multiprocessing import Pool
total = 0
def add_print(num):
global total
total += 1
print total
if __name__ == "__main__":
nums = range(20)
pool = Pool(processes=20)
pool.map(add_print, nums)
Run Code Online (Sandbox Code Playgroud) python asynchronous shared-memory multiprocessing shared-state
我在python的内置csv模块中遇到过一个我以前从未注意过的行为.通常,当我在csv中读取时,它几乎逐字地遵循文档,使用"with"打开文件,然后使用"for"循环遍历reader对象.但是,我最近尝试连续两次迭代csv.reader对象,结果发现第二个'for'循环没有做任何事情.
import csv
with open('smallfriends.csv','rU') as csvfile:
readit = csv.reader(csvfile,delimiter=',')
for line in readit:
print line
for line in readit:
print 'foo'
Run Code Online (Sandbox Code Playgroud)
控制台输出:
Austins-iMac:Desktop austin$ python -i amy.py
['Amy', 'James', 'Nathan', 'Sara', 'Kayley', 'Alexis']
['James', 'Nathan', 'Tristan', 'Miles', 'Amy', 'Dave']
['Nathan', 'Amy', 'James', 'Tristan', 'Will', 'Zoey']
['Kayley', 'Amy', 'Alexis', 'Mikey', 'Sara', 'Baxter']
>>>
>>> readit
<_csv.reader object at 0x1023fa3d0>
>>>
Run Code Online (Sandbox Code Playgroud)
所以第二个'for'循环基本上什么也没做.我有一个想法是csv.reader对象在被读取一次后从内存中释放.但事实并非如此,因为它仍然保留了它的内存地址.我找到了一篇提到类似问题的帖子.他们给出的原因是,一旦读取了对象,指针就会停留在内存地址的末尾,准备将数据写入对象.它是否正确?有人可以详细了解这里发生了什么吗?有没有办法将指针推回到内存地址的开头重新读取?我知道这样做是不好的编码实践,但我主要只是好奇并希望更多地了解Python的内容.
谢谢!