Python Forum
Error in the files last 8 lines
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Error in the files last 8 lines
#1
When I try to run thee below code:

'''
Script to run time series models against all data in the \data folder.

Author: @josh
'''
import os
import numpy as np
import pandas as pd
from tensorflow.keras.optimizers import SGD
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LSTM, Dropout, GRU, SimpleRNN
from sklearn.preprocessing import MinMaxScaler
from fbprophet import Prophet

import matplotlib.pyplot as plt
plt.style.use('fivethirtyeight')


def create_files_dict(pth='./data/'):
    '''
    create dictionary of files
    '''
    # pull all data files
    files = os.listdir(pth)
    print(files)

    all_data = dict()
    for file in files:

        # create key and file path
        file_key = file.split('_')[0]
        file_path = os.path.join(pth, file)

        # read the data
        data = pd.read_csv(
            file_path,
            index_col='Date',
            parse_dates=['Date']
        )

        # store data in dictionary
        all_data[file_key] = data

    return all_data


def plot_data(data, stock_name, pth='./figures/'):
    '''
    plot the data
    '''
    # create train and test
    data["High"][:'2016'].plot(figsize=(16, 4), legend=True)
    data["High"]['2017':].plot(figsize=(16, 4), legend=True)

    # plot the data
    plt.legend(['Training set (Before 2017)', 'Test set (2017 and beyond)'])
    plt.title('{} stock price'.format(stock_name))
    fig_path = os.path.join(pth, stock_name + '_train_test')

    # save the data, pause, and close
    plt.savefig(fig_path)
    plt.pause(1)
    plt.close()


def create_dl_train_test_split(all_data):
    '''
    create training/testing data and scaler object
    '''
    # create training and test set
    training_set = all_data[:'2016'].iloc[:, 1:2].values
    test_set = all_data['2017':].iloc[:, 1:2].values

    # scale the data
    sc = MinMaxScaler(feature_range=(0, 1))
    training_set_scaled = sc.fit_transform(training_set)

    # create training and test data
    X_train = []
    y_train = []
    for i in range(60, 2768):
        X_train.append(training_set_scaled[i - 60:i, 0])
        y_train.append(training_set_scaled[i, 0])

    X_train, y_train = np.array(X_train), np.array(y_train)

    # Reshaping X_train for efficient modelling
    X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))

    total_data = pd.concat(
        (all_data["High"][:'2016'], all_data["High"]['2017':]), axis=0)
    inputs = total_data[len(total_data) - len(test_set) - 60:].values
    inputs = inputs.reshape(-1, 1)
    inputs = sc.transform(inputs)

    # Preparing X_test
    X_test = []
    for i in range(60, 311):
        X_test.append(inputs[i - 60:i, 0])

    X_test = np.array(X_test)
    X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))

    return X_train, y_train, X_test, sc


def create_single_layer_small_rnn_model(X_train, y_train, X_test, sc):
    '''
    create single layer rnn model trained on X_train and y_train
    and make predictions on the X_test data
    '''
    # create a model
    model = Sequential()
    model.add(SimpleRNN(6))
    model.add(Dense(1))

    model.compile(optimizer='rmsprop', loss='mean_squared_error')

    # fit the RNN model
    model.fit(X_train, y_train, epochs=100, batch_size=150)

    # Finalizing predictions
    scaled_preds = model.predict(X_test)
    test_preds = sc.inverse_transform(scaled_preds)

    return model, test_preds


def create_single_layer_rnn_model(X_train, y_train, X_test, sc):
    '''
    create single layer rnn model trained on X_train and y_train
    and make predictions on the X_test data
    '''
    # create a model
    model = Sequential()
    model.add(SimpleRNN(32))
    model.add(Dense(1))

    model.compile(optimizer='rmsprop', loss='mean_squared_error')

    # fit the RNN model
    model.fit(X_train, y_train, epochs=100, batch_size=150)

    # Finalizing predictions
    scaled_preds = model.predict(X_test)
    test_preds = sc.inverse_transform(scaled_preds)

    return model, test_preds


def create_rnn_model(X_train, y_train, X_test, sc):
    '''
    create rnn model trained on X_train and y_train
    and make predictions on the X_test data
    '''
    # create a model
    model = Sequential()
    model.add(SimpleRNN(32, return_sequences=True))
    model.add(SimpleRNN(32, return_sequences=True))
    model.add(SimpleRNN(32, return_sequences=True))
    model.add(SimpleRNN(32))
    model.add(Dense(1))

    model.compile(optimizer='rmsprop', loss='mean_squared_error')

    # fit the RNN model
    model.fit(X_train, y_train, epochs=100, batch_size=150)

    # Finalizing predictions
    scaled_preds = model.predict(X_test)
    test_preds = sc.inverse_transform(scaled_preds)

    return model, test_preds


def create_GRU_model(X_train, y_train, X_test, sc):
    '''
    create GRU model trained on X_train and y_train
    and make predictions on the X_test data
    '''
    # The GRU architecture
    regressorGRU = Sequential()
    # First GRU layer with Dropout regularisation
    regressorGRU.add(GRU(units=50, return_sequences=True,
                         input_shape=(X_train.shape[1], 1), activation='tanh'))
    regressorGRU.add(GRU(units=50, return_sequences=True, activation='tanh'))
    regressorGRU.add(GRU(units=50, return_sequences=True, activation='tanh'))
    regressorGRU.add(GRU(units=50, activation='tanh'))
    regressorGRU.add(Dense(units=1))

    # Compiling the RNN
    regressorGRU.compile(
        optimizer=SGD(
            lr=0.01,
            decay=1e-7,
            momentum=0.9,
            nesterov=False),
        loss='mean_squared_error')
    # Fitting to the training set
    regressorGRU.fit(X_train, y_train, epochs=50, batch_size=150)

    GRU_predicted_stock_price = regressorGRU.predict(X_test)
    GRU_predicted_stock_price = sc.inverse_transform(GRU_predicted_stock_price)

    return regressorGRU, GRU_predicted_stock_price


def create_GRU_with_drop_out_model(X_train, y_train, X_test, sc):
    '''
    create GRU model trained on X_train and y_train
    and make predictions on the X_test data
    '''
    # The GRU architecture
    regressorGRU = Sequential()
    # First GRU layer with Dropout regularisation
    regressorGRU.add(GRU(units=50, return_sequences=True,
                         input_shape=(X_train.shape[1], 1), activation='tanh'))
    regressorGRU.add(Dropout(0.2))
    # Second GRU layer
    regressorGRU.add(GRU(units=50, return_sequences=True, activation='tanh'))
    regressorGRU.add(Dropout(0.2))
    # Third GRU layer
    regressorGRU.add(GRU(units=50, return_sequences=True, activation='tanh'))
    regressorGRU.add(Dropout(0.2))
    # Fourth GRU layer
    regressorGRU.add(GRU(units=50, activation='tanh'))
    regressorGRU.add(Dropout(0.2))
    # The output layer
    regressorGRU.add(Dense(units=1))
    # Compiling the RNN
    regressorGRU.compile(
        optimizer=SGD(
            lr=0.01,
            decay=1e-7,
            momentum=0.9,
            nesterov=False),
        loss='mean_squared_error')
    # Fitting to the training set
    regressorGRU.fit(X_train, y_train, epochs=50, batch_size=150)

    GRU_predicted_stock_price = regressorGRU.predict(X_test)
    GRU_predicted_stock_price = sc.inverse_transform(GRU_predicted_stock_price)

    return regressorGRU, GRU_predicted_stock_price


def create_prophet_results(all_data,
                           final_train_idx=2768,
                           pred_periods=250):
    '''
    create prophet model trained on first 2768 rows by
    default and predicts on last 250 rows
    '''
    # Pull train data
    train_data = all_data[:final_train_idx].reset_index()[['Date', 'High']]
    train_data.columns = ['ds', 'y']

    # Create and fit model
    prophet_model = Prophet()
    prophet_model.fit(train_data)

    # Provide predictions
    test_dates = prophet_model.make_future_dataframe(periods=pred_periods)
    forecast_prices = prophet_model.predict(test_dates)

    return forecast_prices


def create_prophet_daily_results(data):
    '''

    '''
    test_results = pd.DataFrame()
    for val in range(2768, 3019):

        # format training dataframe
        df = data['High'][:val].reset_index()
        df.columns = ['ds', 'y']

        # Instantiate and fit the model
        proph_model = Prophet(daily_seasonality=True)
        proph_model.fit(df)

        # create test dataframe
        test_dates = proph_model.make_future_dataframe(periods=1)

        # store test results in dataframe
        preds = proph_model.predict(test_dates).tail(1)
        test_results = test_results.append(preds)

    return test_results


def plot_results(actuals,
                 stock_name,
                 small_one_layer_preds,
                 one_layer_preds,
                 yearly_prophet_preds,
                 gru_drop_preds,
      

           rnn_preds,
                 gru_preds,
                 plot_pth='./figures'):
    '''
    plot the results
    '''
    plt.figure(figsize=(20, 5))
    plt.plot(yearly_prophet_preds.reset_index()[
             'yhat'].values[-250:], label='prophet yearly predictions')
    plt.plot(stock_data["High"]['2017':].values[:-1], label='actual values')
    plt.plot(small_one_layer_preds, label='Single Layer Small RNN values')
    plt.plot(one_layer_preds, label='Single Layer RNN values')
    plt.plot(gru_drop_preds, label='GRU with dropout values')
    plt.plot(rnn_preds, label='RNN values')
    plt.plot(gru_preds, label='GRU values')
    plt.title('{} Predictions from Prophet vs. Actual'.format(stock_name))
    plt.legend()

    fig_path = os.path.join(plot_pth, 'results', stock_name + '_preds')

    # save the data, pause, and close
    plt.savefig(fig_path)
    plt.pause(1)
    plt.close()


if __name__ == '__main__':
    all_data = create_files_dict()
    for stock_name, stock_data in all_data.items():
        # initial plots
        plot_data(stock_data, stock_name)

        # create dl data
        X_train, y_train, X_test, sc = create_dl_train_test_split(stock_data)

        # create small single layer small rnn preds
        small_single_layer_rnn, small_one_layer_preds = create_single_layer_small_rnn_model(
            X_train, y_train, X_test, sc)

        # create single layer rnn preds
        single_layer_rnn, one_layer_preds = create_single_layer_rnn_model(
            X_train, y_train, X_test, sc)

        # rnn daily preds
        rnn_model, rnn_preds = create_rnn_model(X_train, y_train, X_test, sc)

        # gru daily preds
        gru_model, gru_preds = create_GRU_model(X_train, y_train, X_test, sc)

        # gru daily preds
        gru_drop_model, gru_drop_preds = create_GRU_with_drop_out_model(
            X_train, y_train, X_test, sc)

        # yearly preds
        yearly_preds = create_prophet_results(stock_data)

        # daily preds
        # prophet_daily_preds = create_prophet_daily_results(stock_data)

        # plot results
        plot_results(stock_data,
                     stock_name,
                     small_one_layer_preds,
                     one_layer_preds,
                     yearly_preds,
                     gru_drop_preds,
                     rnn_preds,
                     gru_preds)
I get the following error:

Error:
NotImplementedError Traceback (most recent call last) <ipython-input-11-8c4e928d8ca1> in <module> 337 # create small single layer small rnn preds 338 small_single_layer_rnn, small_one_layer_preds = create_single_layer_small_rnn_model( --> 339 X_train, y_train, X_test, sc) 340 341 # create single layer rnn preds <ipython-input-11-8c4e928d8ca1> in create_single_layer_small_rnn_model(X_train, y_train, X_test, sc) 118 119 # fit the RNN model --> 120 model.fit(X_train, y_train, epochs=100, batch_size=150) 121 122 # Finalizing predictions ~\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\keras\engine\training.py in _method_wrapper(self, *args, **kwargs) 106 def _method_wrapper(self, *args, **kwargs): 107 if not self._in_multi_worker_mode(): # pylint: disable=protected-access --> 108 return method(self, *args, **kwargs) 109 110 # Running inside `run_distribute_coordinator` already. ~\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\keras\engine\training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq, max_queue_size, workers, use_multiprocessing) 1096 batch_size=batch_size): 1097 callbacks.on_train_batch_begin(step) -> 1098 tmp_logs = train_function(iterator) 1099 if data_handler.should_sync: 1100 context.async_wait() ~\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\eager\def_function.py in __call__(self, *args, **kwds) 778 else: 779 compiler = "nonXla" --> 780 result = self._call(*args, **kwds) 781 782 new_tracing_count = self._get_tracing_count() ~\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\eager\def_function.py in _call(self, *args, **kwds) 821 # This is the first call of __call__, so we have to initialize. 822 initializers = [] --> 823 self._initialize(args, kwds, add_initializers_to=initializers) 824 finally: 825 # At this point we know that the initialization is complete (or less ~\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\eager\def_function.py in _initialize(self, args, kwds, add_initializers_to) 695 self._concrete_stateful_fn = ( 696 self._stateful_fn._get_concrete_function_internal_garbage_collected( # pylint: disable=protected-access --> 697 *args, **kwds)) 698 699 def invalid_creator_scope(*unused_args, **unused_kwds): ~\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\eager\function.py in _get_concrete_function_internal_garbage_collected(self, *args, **kwargs) 2853 args, kwargs = None, None 2854 with self._lock: -> 2855 graph_function, _, _ = self._maybe_define_function(args, kwargs) 2856 return graph_function 2857 ~\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\eager\function.py in _maybe_define_function(self, args, kwargs) 3211 3212 self._function_cache.missed.add(call_context_key) -> 3213 graph_function = self._create_graph_function(args, kwargs) 3214 self._function_cache.primary[cache_key] = graph_function 3215 return graph_function, args, kwargs ~\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\eager\function.py in _create_graph_function(self, args, kwargs, override_flat_arg_shapes) 3073 arg_names=arg_names, 3074 override_flat_arg_shapes=override_flat_arg_shapes, -> 3075 capture_by_value=self._capture_by_value), 3076 self._function_attributes, 3077 function_spec=self.function_spec, ~\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\framework\func_graph.py in func_graph_from_py_func(name, python_func, args, kwargs, signature, func_graph, autograph, autograph_options, add_control_dependencies, arg_names, op_return_value, collections, capture_by_value, override_flat_arg_shapes) 984 _, original_func = tf_decorator.unwrap(python_func) 985 --> 986 func_outputs = python_func(*func_args, **func_kwargs) 987 988 # invariant: `func_outputs` contains only Tensors, CompositeTensors, ~\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\eager\def_function.py in wrapped_fn(*args, **kwds) 598 # __wrapped__ allows AutoGraph to swap in a converted function. We give 599 # the function a weak reference to itself to avoid a reference cycle. --> 600 return weak_wrapped_fn().__wrapped__(*args, **kwds) 601 weak_wrapped_fn = weakref.ref(wrapped_fn) 602 ~\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\framework\func_graph.py in wrapper(*args, **kwargs) 971 except Exception as e: # pylint:disable=broad-except 972 if hasattr(e, "ag_error_metadata"): --> 973 raise e.ag_error_metadata.to_exception(e) 974 else: 975 raise NotImplementedError: in user code: C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\keras\engine\training.py:806 train_function * return step_function(self, iterator) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\keras\engine\training.py:796 step_function ** outputs = model.distribute_strategy.run(run_step, args=(data,)) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:1211 run return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:2585 call_for_each_replica return self._call_for_each_replica(fn, args, kwargs) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:2945 _call_for_each_replica return fn(*args, **kwargs) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\keras\engine\training.py:789 run_step ** outputs = model.train_step(data) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\keras\engine\training.py:747 train_step y_pred = self(x, training=True) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\keras\engine\base_layer.py:985 __call__ outputs = call_fn(inputs, *args, **kwargs) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\keras\engine\sequential.py:386 call outputs = layer(inputs, **kwargs) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\keras\layers\recurrent.py:663 __call__ return super(RNN, self).__call__(inputs, **kwargs) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\keras\engine\base_layer.py:985 __call__ outputs = call_fn(inputs, *args, **kwargs) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\keras\layers\recurrent.py:1573 call inputs, mask=mask, training=training, initial_state=initial_state) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\keras\layers\recurrent.py:735 call inputs, initial_state, constants) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\keras\layers\recurrent.py:862 _process_inputs initial_state = self.get_initial_state(inputs) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\keras\layers\recurrent.py:646 get_initial_state inputs=None, batch_size=batch_size, dtype=dtype) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\keras\layers\recurrent.py:1385 get_initial_state return _generate_zero_filled_state_for_cell(self, inputs, batch_size, dtype) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\keras\layers\recurrent.py:2968 _generate_zero_filled_state_for_cell return _generate_zero_filled_state(batch_size, cell.state_size, dtype) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\keras\layers\recurrent.py:2986 _generate_zero_filled_state return create_zeros(state_size) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\keras\layers\recurrent.py:2981 create_zeros return array_ops.zeros(init_state_size, dtype=dtype) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\util\dispatch.py:201 wrapper return target(*args, **kwargs) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\ops\array_ops.py:2747 wrapped tensor = fun(*args, **kwargs) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\ops\array_ops.py:2794 zeros output = _constant_if_small(zero, shape, dtype, name) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\ops\array_ops.py:2732 _constant_if_small if np.prod(shape) < 1000: <__array_function__ internals>:6 prod C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\numpy\core\fromnumeric.py:3031 prod keepdims=keepdims, initial=initial, where=where) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\numpy\core\fromnumeric.py:87 _wrapreduction return ufunc.reduce(obj, axis, dtype, out, **passkwargs) C:\Users\james\miniconda3\envs\tensorflow-2.2\lib\site-packages\tensorflow\python\framework\ops.py:848 __array__ " a NumPy call, which is not supported".format(self.name)) NotImplementedError: Cannot convert a symbolic Tensor (sequential_10/simple_rnn_10/strided_slice:0) to a numpy array. This error may indicate that you're trying to pass a Tensor to a NumPy call, which is not supported
I think this is happening in the following code:

plot_results(stock_data,
                     stock_name,
                     small_one_layer_preds,
                     one_layer_preds,
                     yearly_preds,
                     gru_drop_preds,
                     rnn_preds,
                     gru_preds)
I just ran sequential lines of code until the error occurred. I have tried many things, but I believe it s the right combination of python, tensorflow, numpy and h5py to get the error fixed. i just do not know that combination.

My current specsare:
Windwos 10
python - 3.7.0
numpy - 1.19.5
h5py - 2.10.0
tensorflow - 2.3.0


Any help appreciated.

Respectfully,

LZ
Reply
#2
I think that I have the solution. It seems to work, but it does give some unusual error.

I can get rid of the error, installing pycotools. The error is gone. When I do that the install process is long and complicated and successful.

But it does give this error in on my monitor screen at the end of the install. The software says that the install was successful.

Output:
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. tf-nightly 2.6.0.dev20210428 requires h5py~=3.1.0, but you have h5py 2.10.0 which is incompatible. tf-nightly 2.6.0.dev20210428 requires six~=1.15.0, but you have six 1.16.0 which is incompatible. tf-nightly 2.6.0.dev20210428 requires typing-extensions~=3.7.4, but you have typing-extensions 3.10.0.0 which is incompatible. tensorflow 2.3.0 requires gast==0.3.3, but you have gast 0.4.0 which is incompatible. tensorflow 2.3.0 requires numpy<1.19.0,>=1.16.0, but you have numpy 1.19.3 which is incompatible. tensorflow 2.3.0 requires scipy==1.4.1, but you have scipy 1.7.1 which is incompatible. tensorflow 2.3.0 arequires tensorflow-estimator<2.4.0,>=2.3.0, but you have tensorflow-estimator 2.5.0 which is incompatible.
This is not a perfect install. Obviously, but how do I fix it? Do I reinstall each library, removing the one that is incompatible and putting it the one that is, as stated in the error printout. If I did those one at a time wouldn't it also change other libraries and their versions? I cannot just replace a library in a vacuum, other things would be installed also, I do not think that would work.

How to fix this?

Respectfully,

LZ
Reply
#3
You should link to what you try to run,which is Time Series Forecasting
So this code that made 14 months ago no update and issues reported as probably very few have tried it.
Build new virtual environment for code this,as there as there is is no setup.py or requirements.txt can not be sure that new library's update break this code.
This is often how it is in Machine learning that someone make blog post, code to show the concept,
this is not a library that made for longevity with updates.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Find specific subdir, open files and find specific lines that are missing from a file tester_V 8 3,537 Aug-25-2020, 01:52 AM
Last Post: tester_V
  Iterate 2 large text files across lines and replace lines in second file medatib531 13 5,768 Aug-10-2020, 11:01 PM
Last Post: medatib531
  Read Multiples Text Files get specific lines based criteria zinho 5 3,104 May-19-2020, 12:30 PM
Last Post: zinho
  Delete Lines that Contain Words - Loop through files in a folder - Write to new files dj99 3 3,434 May-18-2019, 06:34 AM
Last Post: heiner55
  edit text files/ add lines if missing (regex) wardancer84 3 2,799 Nov-08-2018, 02:47 PM
Last Post: wardancer84
  Only one of two lines print/syntax error naysjp 2 3,722 Jan-12-2017, 07:08 AM
Last Post: wavic

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020