相关疑难解决方法(0)

如何打开文件进行读写?

有没有办法打开文件进行读写?

作为一种解决方法,我打开文件进行写入,关闭它,然后再次打开它进行读取.但是,有没有办法打开一个文件阅读和写作?

python file-io file

179
推荐指数
4
解决办法
24万
查看次数

Jenkins不在控制台中打印python脚本的输出

我有一个python脚本(myscript.py)如下:

#!/bin/python
import os
import optparse
import subprocess
import sys
sys.stdout.flush()

print("I can see this message on Jenkins console output")
cmd="sshpass -p 'xxx' ssh test@testmachine 'cmd /c cd C:\stage && test.bat'"
retval=subprocess.call(cmd,shell=True)
print retval
Run Code Online (Sandbox Code Playgroud)

在jenkins中,我有一个执行shell的工作如下:

#!/bin/sh
./myscript.py
Run Code Online (Sandbox Code Playgroud)

问题: Jenkins控制台只显示"我可以在Jenkins控制台输出上看到此消息".如果子进程调用有任何输出,则不会在控制台上打印出来.

如果我把putty添加到服务器A并在shell上运行相同的命令(./myscript.py),我可以看到子进程调用的输出.

如何在Jenkins控制台上打印此子进程调用输出?

仅供参考:正如您从我的命令中看到的那样,子进程调用正在Windows上运行批处理文件; Jenkins在Linux上运行; 两台机器之间有ssh设置..

编辑: 我的test.bat看起来像这样:

echo off
RMDIR /S /Q C:\Test

IF %ERRORLEVEL% NEQ 0 (
  ECHO Could not delete
  EXIT /b %ERRORLEVEL%
)
Run Code Online (Sandbox Code Playgroud)

如果我在Windows服务器上本地运行这个批处理文件,它返回1(因为我在Test文件夹中打开一个文件)

但是当python脚本使用子进程调用调用这个批处理文件时,我得到的只是一个Zero for retval.

这是为什么以及如何解决这个问题?如果我能捕获正确的retval,我可以让Jenkins的工作失败.

编辑12/12:Helllo !! 任何人!有人!救命!

python batch-file jenkins

4
推荐指数
3
解决办法
4193
查看次数

使用truncate打开文件进行读写

如何打开一个文件进行读写,也被截断为0?

我试过了:

f = open(PATH, 'w+')
Run Code Online (Sandbox Code Playgroud)

但是,我无法从文件中读取(f.read()返回空字符串).

也:

f = os.fdopen(os.open(PATH, os.O_RDWR | os.O_TRUNC), 'r+')
Run Code Online (Sandbox Code Playgroud)

与前面的代码相同.

python python-3.x

3
推荐指数
2
解决办法
7703
查看次数

标签 统计

python ×3

batch-file ×1

file ×1

file-io ×1

jenkins ×1

python-3.x ×1