¿Cómo leo en un archivo de texto línea por línea?Es posible leer en un JSL Script línea por línea (en realidad, JMP hace una lista con cada línea como un elemento de la lista) usando el código a continuación.
myFile= open("$RUTA\testScript.jsl");
misCfLines = miArchivo[scriptBox(1)] << obtenerLíneas();
Sin embargo, cuando trato de hacer esto con un archivo de texto que tiene una extensión '*.txt', JMP abre automáticamente esto como una tabla de datos, por lo que no puedo usar este método para obtener las líneas (¡ya que no es un cuadro de script!)
¿Hay otro método? No quiero usar la función loadTextFile() ya que esto raspa el archivo completo en una cadena. ¡Idealmente, me gustaría abrir el archivo, leer cada línea una a la vez y hacer una expresión regular para extraer los datos que necesito!
Re: ¿Cómo leo un archivo de texto línea por línea?JMP no transmite sobre el archivo de texto. Tendría que usar la solución para cargar el archivo completo y luego separar las líneas. Puede iterar sobre los elementos de la lista (líneas individuales) para determinar si cumplen con su criterio.
Como alternativa, puede importar el archivo de texto a un libro de Excel y luego usar Archivo > Base de datos > Abrir tabla o Archivo > Base de datos > Generador de consultas para definir la cláusula WHERE para seleccionar las filas que desea extraer.
Re: ¿Cómo leo un archivo de texto línea por línea?Tengo un archivo de texto enorme pero quiero leer y cargar solo unas pocas líneas. Básicamente, quiero cargar todas las líneas que comiencen con A_ o B_ o C_ o D_. ¿Puede funcionar si la condición?
Re: ¿Cómo leo un archivo de texto línea por línea?Tengo que darle la recompensa a Jeff en este caso a pesar de mi reticencia inicial sobre la función loadTextFile. Los tres métodos funcionan, así que hice una comparación de tiempo rápida usando un archivo de texto de 250M, 5M Line de uno de nuestros probadores. Por cierto, mi caso de uso es que necesito filtrar estos enormes archivos de registro, línea por línea, y filtrar algunos resultados basados en una tabla de expresiones regulares.
Supongo que esto no es justo, ya que dije que quería evitar cargar el archivo de texto;)
***Ian***
miNumSegundos = 66;
N Elementos (myCfLines) = 5059756;
***Jeff***
miNumSegundos = 7;
N elementos (myLines) = 5059755;
*** Craig ***
miNumSegundos = 67;
N Elementos (myCfLines) = 5059756;
Re: ¿Cómo leo un archivo de texto línea por línea?Hay una opción de "script" que puede dar para abrir para que esto funcione:
open("$sample_data/../Importar datos/bigclass.txt","script")
Ahora, en lugar de abrirse como "texto" (que es el valor predeterminado de la extensión .txt) y crear una tabla de datos, se abrirá en una ventana de secuencia de comandos. Sí, la opción "texto" tiene un nombre extraño, pero se refiere al texto CSV.
Re: ¿Cómo leo un archivo de texto línea por línea?JSL actualmente no tiene herramientas para abrir un archivo y leerlo una línea a la vez.
Sin embargo, si usas Cargar archivo de texto() entonces puedes usar el Palabras() función para entrar en las líneas individuales en una lista.
bctxt=load text file ("$SAMPLE_IMPORT_DATA\Bigclass.txt");
lines=words(bctxt,"\!n");
Re: ¿Cómo leo un archivo de texto línea por línea?Como puede ver, JMP usa las extensiones de archivo para intentar hacer algo apropiado.
No estoy seguro de entender completamente su caso de uso, pero si una extensión '.jsl' da el comportamiento que desea, podría considerar usar 'RenameFile()':
renameFile("$DESKTOP/Test.txt", "Test.jsl");
myFile = open("$DESKTOP/Test.jsl");
myCfLines = myFile[scriptBox(1)] << getLines();
renameFile("$DESKTOP/Test.jsl", "Test.txt");