我正在使用BeyondCompare3,我有两个文件包含这种格式的行。
abc,bbbb,cdef,test,14:45:23.123,info,comment
我想从比较中省略日期。
我选择了“会话”>“会话设置”>“重要性”选项卡>“编辑语法”按钮,并创建了一个新规则。
输入元素名称后,我选择了“基本”类别,选中了“正则表达式”并搜索“文本”。[0-9] {1,2}:[0-9] {1,2}:[0-9] {1,2}。[0-9] {1,3}。我也尝试过/[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}。[0-9]{1,3}/ 。
然后,我在工具栏上单击“忽略无关紧要的差异”。
我希望这会忽略比较中的日期列。但事实并非如此。
此或其他工具/脚本的任何指针将不胜感激。
约翰。
我发现了一些类似的例子来将消息记录到多个文件。但没有什么完全符合我的要求。我正在使用日志记录模块,并将所有信息消息记录到控制台和文件。(稍后我将关闭控制台日志记录)。
但是我希望扩展它以将所有信息消息记录到 file.log 并将所有错误消息记录到 file.err。如果可以将所有消息记录到 file.log(错误和信息),然后将所有错误消息记录到一个单独的文件,那就更好了。
这可能吗?
我显然无法在 7 小时内回答我自己的问题,所以我将更新我的原始问题。
我现在觉得自己很傻。在发布之前尝试了几个小时的示例后,我“再次”发现了这一点。就像在阅读示例时输入我想要做的事情的任务触发了一些事情。
http://docs.python.org/2/howto/logging-cookbook.html
这会将 INFO 级别及更高级别的所有内容输出到一个日志文件 (log_file),然后还将 logging.error 和 logging.warning 消息打印到单独的文件 (err_file)
# set up logging to file - see previous section for more details
logging.basicConfig(level=logging.INFO,
format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
filemode='w')
log_error = logging.FileHandler(err_file)
log_error.setLevel(logging.WARNING)
log_info = logging.FileHandler(log_file)
log_info.setLevel(logging.INFO)
# set a format which is simpler for console use
formatter = logging.Formatter('%(asctime)s %(levelname)-8s %(message)s')
# tell the handler to use this format
log_error.setFormatter(formatter)
log_info.setFormatter(formatter)
# add the handler to …Run Code Online (Sandbox Code Playgroud) 我正在使用 Dapper 访问数据库对象。
所以这一行
Console.Write(string.Join(System.Environment.NewLine, results));
Run Code Online (Sandbox Code Playgroud)
给我
{DapperRow, VALUE_A = 'Y', VALUE_B = 'Y'}
Run Code Online (Sandbox Code Playgroud)
但我想访问或打印这些值,例如
DapperRow,
VALUE_A = 'Y'
VALUE_B = 'Y'
Run Code Online (Sandbox Code Playgroud)
但我收到“System.InvalidCastException:无法使用以下代码将类型'DapperRow'的对象转换为类型'System.String'”。我尝试使用 foreach 循环遍历此列表。
using (var conn = new OracleConnection("Password=xxxxx;Persist Security Info=True;User ID=xxxxx;Data Source=xxxxx"))
{
// dapper adds an extension method to the connection for querying
string sql = "SELECT X, Y FROM Z WHERE ABC = 123";
var results = conn.Query(sql).ToList();
Console.Write(string.Join(System.Environment.NewLine, results));
foreach (string value in results)
{
Console.WriteLine("> {0}",value);
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个包含这种格式的行的文件.
Example 1:
nextline = "DD:MM:YYYY INFO - 'WeeklyMedal: Hole = 1; Par = 4; Index = 2; Distance = 459; Score = { Player1 = 4 };"
Example 2:
nextline = "DD:MM:YYYY INFO - 'WeeklyMedal: Hole = 1; Par = 4; Index = 2; Distance = 459; Score = { Player1 = 4; Player2 = 6; Player3 = 4 };"
Run Code Online (Sandbox Code Playgroud)
我首先用':'分割这一行,这给了我一个包含2个条目的列表.我想将这一行拆分为带有键和值的字典,但是得分键有多个具有值的子键.
Hole 1
Par 4
Index 2
Distance 459
Score
Player1 4
Player2 6
Player3 4
Run Code Online (Sandbox Code Playgroud)
所以我使用的是这样的......
split_line_by_semicolon = …Run Code Online (Sandbox Code Playgroud) 我已经用一个项目列表填充了一个QListWidget,并添加了一个复选框,使所有内容都未选中.
for td in root.iter('testdata'):
test_data = td.get('ins')
item = QtGui.QListWidgetItem(test_data, self.listWidgetLabels)
item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
item.setCheckState(QtCore.Qt.Unchecked)
Run Code Online (Sandbox Code Playgroud)
然后,用户单击QListItem中的一些项目,然后单击gui上的"生成文件"按钮.
self.pushButtonGenerateFile.clicked.connect(self.generate_file)
Run Code Online (Sandbox Code Playgroud)
我想获得所有已检查的QListItem的列表.
def generate_driver(self):
test = self.listWidgetLabels.selectedItems()
items = []
checked_items = []
for index in range(self.listWidgetLabels.count()):
items.append(self.listWidgetLabels.item(index))
for x in self.listWidgetLabels.selectedItems():
checked.append(x.text())
for i in checked:
print("Checked Items: {0}".format(i))
Run Code Online (Sandbox Code Playgroud)
上面的内容获取列表中的selectedItem.我试过getState(),getChecked(),但QListWidget项不存在.
任何线索都非常感谢.
谢谢,
约翰.
我在 python 中使用 urllib.request 尝试从 Teamcity 下载一些构建信息。此请求过去无需用户名和密码即可工作,但最近的安全更改意味着我必须使用用户名和密码。所以我改变了尝试以下两种解决方案:
尝试1)
url = 'http://<domain>/httpAuth/app/rest/buildTypes/<buildlabel>/builds/running:false?count=1&start=0'
# create a password manager
password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()
# Add the username and password.
top_level_url = "http://<domain>/httpAuth/app/rest/buildTypes/id:<buildlabel>/builds/running:false?count=1&start=0"
password_mgr.add_password(None, top_level_url, username, password)
handler = urllib.request.HTTPBasicAuthHandler(password_mgr)
# create "opener" (OpenerDirector instance)
opener = urllib.request.build_opener(handler)
# use the opener to fetch a URL
opener.open(url)
Run Code Online (Sandbox Code Playgroud)
尝试2
url = 'http://<username>:<password>@<domain>/httpAuth/app/rest/buildTypes/id:buildlabel/builds/running:false?count=1&start=0'
rest_api = urllib.request.urlopen(url)
Run Code Online (Sandbox Code Playgroud)
这两个都返回“HTTP 错误 401:未经授权”。但是,如果我要打印“url”并将此输出复制到浏览器中,则链接可以正常工作。但是当通过 python 使用时,我收到上述错误。
我在另一个 Perl 脚本中使用了非常相似的东西,这也很完美。
* 已解决如下 *
我试图读入一个 xml 文件并QListWidget用它的一些内容填充 a 。每个条目都应该有一个复选框。
在 Qt Designer 中,我创建了列表并添加了一个带有复选框的项目,方法是将项目添加到 listWidget,然后右键单击它并选择“编辑项目”>“属性”>“将标志设置为 UserCheckable”。所以我可以手动完成。
但是当我读入 xml 文件以填充 ListWidget 时,我无法使这些项目可检查。
import xml.etree.ElementTree as et
xml_file = os.path.join(path, testcase_file)
tree = et.parse(xml_file)
root = tree.getroot()
for testcases in root.iter('testcase'):
testcase_name = str(testcases.attrib)
item = self.listWidgetTestCases
item.addItem(QtGui.QApplication.translate("qadashboard", testcase_name, None))
# item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
# item.setCheckState(QtCore.Qt.Unchecked)
Run Code Online (Sandbox Code Playgroud)
这将在列表小部件中创建一个测试用例名称列表。但是我无法将这些项目放入复选框中。item.setFlagsorItemIsUserCheckable无法识别列表小部件,因此在上面的示例中注释掉了这两行。
我想在文本文件中搜索包含“Performance Stats:”的行,然后打印接下来的 20 行左右,因为它们是性能统计表。我正在使用 Streamreader。
string pathToFile = "\\host\c$\temp\logs\myPerformanceFile.txt"
using (var filestream = new FileStream(pathToFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var streamReader = new StreamReader(filestream, Encoding.Default))
{
string line;
while ((line = streamReader.ReadLine()) != null)
{
if (line.Contains("Performance Stats:"))
{
Console.WriteLine(line)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我试图找到每个统计数据的标题栏。但 20 行看起来有点混乱,例如,我正在使用相同的搜索参数解析文件中有 5 个表。但我只想要其中一个表中的数据。
if (line.Contains("Timings:"))
{
Console.WriteLine(line)
}
if (line.Contains("Downloads:"))
{
Console.WriteLine(line)
}
if (line.Contains("Reset"))
{
Console.WriteLine(line)
}
Run Code Online (Sandbox Code Playgroud) 我有一系列哈希.
输出:
$VAR1 = {
'Name' => 'Bob',
'Address' => 'Home',
'DOB' => '01/01/1990',
'Sex' => 'M',
};
$VAR2 = {
'Name' => 'Mary',
'Address' => 'Home',
'DOB' => '01/01/1990',
'Sex' => 'F',
};
Run Code Online (Sandbox Code Playgroud)
我打印到xml文件.但是,当我将此数组打印到xml文件时,我得到:
<Record Address=Home DOB=01/01/1990 Name=Bob Sex=M />
Run Code Online (Sandbox Code Playgroud)
我喜欢有姓名,地址,DOB,性别.
<Record Name=Bob Address=Home Sex=M DOB=01/01/1990 />
Run Code Online (Sandbox Code Playgroud)
按键或键值对数组进行排序也不会使值按正确的顺序排列.是否有一个简单的解决方案以所需的顺序打印哈希?