小编phi*_*ese的帖子

如何在Python中使用BufferedWriter?

我面临以下问题:我正在尝试为供应链实施模拟器.这些将产生许多EPCIS事件(在RFID阅读器上发生的事件).然后应将这些事件写入csv文件,以便将它们加载到任何数据库中并对它们运行分析算法.

模拟器是使用python实现的,工作正常.我现在要做的是缓冲将事件写入文件,以减少访问磁盘所需的时间.浏览python文档我偶然发现了io.BufferedWriter,听起来和我正在寻找的东西完全一样.无论如何,我无法让它发挥作用.

这是我到目前为止所做的.我实现了我的CsvWriter类,它继承自RawIOBase并管理文件句柄.当它被实例化时,它将创建一个BufferedWriter自己交换的raw参数(可能已经是一个问题吗?)

class CsvWriter(AbstractWriter):

    def __init__(self, filename):    
        self.filename = filename
        self.file = self.openFile()
        self.buffer = BufferedWriter(self, settings.WRITE_THRESHOLD)
Run Code Online (Sandbox Code Playgroud)

当我知道想要写一些我称之为write_buffered缓冲的东西时,看起来像这样:

def write_buffered(self, data_dict):    
        self.buffer.write(b';'.join(map(str, data_dict.values())) + '\n')
Run Code Online (Sandbox Code Playgroud)

write(正如我所说)需要在CsvWriter类本身上实现的实际方法如下所示:

def write(self, data):
        if self.file.closed:
            self.file = self.openFile()

        return self.file.write(data)
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试运行模拟器时,我收到以下错误:

IOError: raw write() returned invalid length -1 (should have been between 0 and 78)
Run Code Online (Sandbox Code Playgroud)

你们中的任何人都知道如何解决这个问题吗?

python buffer file bufferedwriter

6
推荐指数
0
解决办法
5492
查看次数

Android 2.1中的ActivityInstrumentationTestCase2有问题吗?

在为我的Android应用程序设置了所有单元测试用例后,我现在也想进行功能测试.但我解决了一个问题.当我为HTC Legend开发时,我现在只能使用高达2.1的Android平台.但从某种程度上看,ActivityInstrumentationTestCase2似乎不起作用.

public SupplierSelectoinTest() {
    super("com.sap.catalogue.activities", SupplierSelection.class);
}
Run Code Online (Sandbox Code Playgroud)

当我尝试运行测试时,这段简单的代码会给我以下错误:

java.lang.RuntimeException: Unable to resolve activity for: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.sap.catalogue.activities/com.sap.catalogue.activities.SupplierSelection }
at android.app.Instrumentation.startActivitySync(Instrumentation.java:371)
at android.test.InstrumentationTestCase.launchActivityWithIntent(InstrumentationTestCase.java:120)
at android.test.InstrumentationTestCase.launchActivity(InstrumentationTestCase.java:98)
at android.test.ActivityInstrumentationTestCase2.getActivity(ActivityInstrumentationTestCase2.java:87)
at com.sap.catalogue.test.acceptance.SupplierSelectoinTest.setUp(SupplierSelectoinTest.java:27)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:430)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
Run Code Online (Sandbox Code Playgroud)

我阅读了所有教程,我得到的是,它应该可以工作,但事实并非如此.无论如何,当我切换到android 2.2(现在没有解决方案)并且我使用新的构造函数时,我只需要提交活动类而不是pkg字符串,模拟器将运行测试而不会抱怨.

但必须有一种方法让它在Android 2.1中运行!

另外 这些是我的两个Manifest.xml文件.第一个,是应用程序本身之一.另一个是测试项目之一.

应用程序Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.sap.catalogue"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".Catalogue"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    <activity android:name=".activities.CategoryBrowser"></activity>

<activity android:name=".activities.ProductDetails"></activity>
<activity android:name=".activities.ProductSearch"></activity>
<activity android:name=".activities.ProductView"></activity>
<activity …
Run Code Online (Sandbox Code Playgroud)

testing android functional-testing

2
推荐指数
1
解决办法
4066
查看次数